代码:
$className = '\MyNamespace\MyClass';
$object = new $className();
抛出错误'未找到班级'
但是这段代码:
$object = new \MyNamespace\MyClass();
不是。
第一个代码片段在暂存时起作用,但不在我的本地起作用。我是否需要在本地服务器上启用某些功能?
非常感谢您的帮助
答案 0 :(得分:3)
动态函数总是需要一个完全限定的命名空间名称,因此前导\
将是多余的。这就是你不应该指定它的原因:
$className = 'MyNamespace\MyClass';
$object = new $className();
但是,它不应该抛出错误。演示:http://codepad.viper-7.com/D8H19r
答案 1 :(得分:0)
只需查看字符串$className
包含的内容即可。你会注意到,你应该总是跳过第一个斜杠。
您可以创建一些辅助工具来为您创建对象,并删除尾部斜杠(如果有的话)
无论如何new
是邪恶的;)