在动态类名称的开头加上反斜杠

时间:2011-09-27 18:48:40

标签: php apache namespaces php-5.3

代码:

$className = '\MyNamespace\MyClass';
$object = new $className();

抛出错误'未找到班级'

但是这段代码:

$object = new \MyNamespace\MyClass();

不是。

第一个代码片段在暂存时起作用,但不在我的本地起作用。我是否需要在本地服务器上启用某些功能?

非常感谢您的帮助

2 个答案:

答案 0 :(得分:3)

动态函数总是需要一个完全限定的命名空间名称,因此前导\将是多余的。这就是你不应该指定它的原因:

$className = 'MyNamespace\MyClass';
$object = new $className();

但是,它不应该抛出错误。演示:http://codepad.viper-7.com/D8H19r

答案 1 :(得分:0)

只需查看字符串$className包含的内容即可。你会注意到,你应该总是跳过第一个斜杠。

您可以创建一些辅助工具来为您创建对象,并删除尾部斜杠(如果有的话) 无论如何new是邪恶的;)