我正在使用Laravel并且无法使用字符串创建类。该类与调用它的类的名称空间相同。
以下代码在第三行失败,我不确定我做错了什么。
$class= "Variant";
$s = new Variant();
$nc = new $class();
答案 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的类声明中包含它。