【发布时间】:2014-11-04 07:02:14
【问题描述】:
我尝试根据变量创建对象。这是我的代码:
$a = 'Test';
$o = new $a();
Fatal error: Class 'Test' not found in ...
我做错了什么?或者在 PHP 中这是不允许的?
【问题讨论】:
-
是否加载了
class Test的文件?你有设置自动加载器吗?您可以像这样通过动态字符串轻松创建类。问题是找不到该类 - 不是代码不起作用。 -
是的,我有自动加载器,如果我写 new Test() 它可以工作。
-
你的自动加载器是什么样的?这应该可以正常工作。
if (class_exists($a, true)) $o = new $a();有什么不同吗? (这将强制自动加载器工作)。 -
我使用作曲家自动加载器
-
我看到您使用命名空间 - 您需要使用 full 类名(带有命名空间),而不仅仅是您当前所在的命名空间所在的类。如果您're extra lazy
__NAMESPACE__可能是一个有用的常量。