您好,匿名用户
随意问技术百科期待您的加入

一个关于PHP命名空间的疑惑

0 投票

在编程的时候遇到这样一个关于命名空间的问题,先上代码:

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();
}

果然出现了和预期一样的错误。我知道可以通过完全限定的方式来解决,但是我仍然想明白这是什么原理,还望高手解惑。

是我自己疏忽了,在手册中找了命名空间和动态语言特征

用户头像 提问 2013年 9月17日 @ Gangplank 上等兵 (314 威望)
分享到:

1个回答

+1 投票
 
最佳答案

手册里有写,在变量中使用命名空间必须使用完全限定名称,规定如此。

http://php.net/manual/zh/language.nam...

用户头像 回复 2013年 9月17日 @ Gemini 上等兵 (319 威望)
选中 2013年 9月7日 @Gangplank
提一个问题:

相关问题

0 投票
1 回复 52 阅读
用户头像 提问 2012年 12月1日 @ Virgo 上等兵 (284 威望)
0 投票
1 回复 26 阅读
用户头像 提问 2013年 11月21日 @ Soraka 上等兵 (319 威望)
0 投票
1 回复 4 阅读
用户头像 提问 2014年 5月29日 @ 我和小伙伴们都惊呆了 上等兵 (156 威望)
0 投票
1 回复 36 阅读
0 投票
1 回复 22 阅读
用户头像 提问 2014年 1月2日 @ Leona 上等兵 (279 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...