当我的文件被命名空间时,我无法动态实例化PHP中的类。
PHP似乎完全不知道我的文件顶部的use
关键字,因为我尝试根据变量的值动态地实例化类。
除了在动态实例化类时对命名空间进行硬编码外,还有一个很好的解决方案吗?
以下是一些快速示例,以显示我的意思:
代码new two('one')
;结果是找不到包含以下两个文件的第一类:
File1中:
namespace uno;
use dos;
class one {
function __construct($what) {
new $what;
}
}
文件2:
namespace dos;
class two { }
文件3:
new one('two'); // Doesn't work!
答案 0 :(得分:1)
完全合格
new \uno\one('two');
或由use
use uno\one;
new one('two');
或(相对)限定(但对于一级命名空间没有多大意义)
use uno;
new uno\one('two');
使用更深的命名空间更有意义
use path\to\myNamespace;
new myNamespace\foo\BarClass;
或将其放在同一名称空间
namespace uno;
new one('two');