在编程的时候遇到这样一个关于命名空间的问题,先上代码:
namespace Test {
class Test {}
}
namespace Chou {
use Test\Test;
class Mee {
public $class = 'Test';
public function getClass()
{
return new $this->class();
}
}
$tmp = new Mee();
$tmp->getClass();
}
我试图在getClass方法中通过变量动态实例化另一个命名空间的类,但是触发了“Class not found”错误。我觉得时$class变量的问题,所以又把测试代码简化了一下:
namespace Chou {
use Test\Test;
$test = 'Test';
$tmp = new $test();
}
果然出现了和预期一样的错误。我知道可以通过完全限定的方式来解决,但是我仍然想明白这是什么原理,还望高手解惑。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。