当我的文件被命名空间时,我无法在PHP中动态实例化类。PHP似乎完全不了解我的文件之上的use关键字,因为我试图根据变量的值动态地实例化类。
除了在动态实例化类时硬编码名称空间之外,是否有一个很好的解决方案?
这里有一些快速的样本来说明我的意思:
代码new two('one');结果是没有找到类one,其中包括以下两个文件:
File1:
namespace uno;
use dos;
class one {
function __construct($what) {
new $what;
}
}File2:
namespace dos;
class two { }文件3:
new one('two'); // Doesn't work!发布于 2011-08-18 21:49:10
要么完全合格
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');请参阅http://php.net/language.namespaces.rules
https://stackoverflow.com/questions/7114524
复制相似问题