2016-01-14 2 views
4

Я использую Laravel и не могу создать класс со строкой. Класс находится в том же имени пространства класса, вызывающего его.PHP динамическое имя класса laravel

Нижеприведенный код не работает на третьей строке, я не уверен, что я делаю неправильно.

$class= "Variant"; 
$s = new Variant(); 
$nc = new $class(); 
+0

Try добавления полное пространство имен в класс строк и посмотреть, работает ли оно так: «\\ Foo \\ Bar \\ Variant». – Rainner

+2

Fails = какая ошибка вы получаете? –

+0

Класс не найден –

ответ

1

Это на самом деле то, что пространства имен для:

$s = new \OneNamespaceName\Variant();

Это часто используется в шаблоне Factory. Таким образом, пространства имен являются per-file, поэтому вам нужно включить это в объявление класса для Variant.

1

Хорошо, ответ на это мне нужно пространство имен в классе.

В composer.json

"psr-4": { 
    "SplitTest\\": "app/library/SplitTest/" 
} 

Тогда называется класс как так:

$class= "//SplitTest//Variant"; 
$s = new Variant(); 
$nc = new $class(); 

Если к определению PSR-4 вам нужно будет запустить

php artisan dump-auto 
Смежные вопросы