PHP动态类名称laravel

时间:2016-01-14 14:31:54

标签: php class laravel dynamic

我正在使用Laravel并且无法使用字符串创建类。该类与调用它的类的名称空间相同。

以下代码在第三行失败,我不确定我做错了什么。

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

2 个答案:

答案 0 :(得分:2)

好的答案是我在课堂上需要一个命名空间。

在composer.json

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

然后将该类称为:

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

如果您使用psr-4定义,则需要运行

php artisan dump-auto

答案 1 :(得分:1)

这实际上是名称空间的用途:

$s = new \OneNamespaceName\Variant();

这通常用于工厂模式。因此名称空间是每个文件,因此您需要在Variant的类声明中包含它。