2017-01-24 13 views
2

Я новичок в PHP, и я попытался динамически создать экземпляр класса, как это:PHP, как динамически создать экземпляр класса

$var = new \App\$str; 

Но я получаю эту ошибку:

unexpected variable $str after '\', expected: identifier. 

Я знаю, это возможно, но я просто не уверен, что такое точный синтаксис, все примеры, которые я нашел, не имеют нужной мне части \App\.

+0

попробовать этот '$ вар = новый \ App \ {$ ул} ; ' –

ответ

2

Оператор new принимает либо идентификатор имени класса, либо переменную, содержащую имя класса, но не являющуюся их смесью.

Поскольку часть вашего полного имени класса неизвестен (динамический), вы должны поместить все части в строковую переменную:

$class_name = 'A'; 
$namespace = '\\App'; 
$fully_qualified_class_name = "$namespace\\$class_name"; 
$var = new $fully_qualified_class_name; 
+0

работает отлично, спасибо! – BoooYaKa