----------------------------------------------------------------------------------------------- /* |----------------------------------------|一.动态访问命名空间的元素|@黑眼诗人 www.farwish.com|---------------------------------------- */ na
-----------------------------------------------------------------------------------------------
<span>/*</span><span> |---------------------------------------- |一.动态访问命名空间的元素 |@黑眼诗人 <www.farwish.com> |---------------------------------------- </www.farwish.com></span><span>*/</span><span> namespace me\poet; </span><span>function</span><span> test() { </span><span>echo</span> '1111'<span>; } </span><span><span>$fun</span> = 'test';</span><span>//</span><span>不能这么用,最后$fun()无法动态调用到test():<strong>Fatal error</strong>: Call to undefined function test()</span> <span>$fun</span> = '\me\poet\test';<span>//</span><span>正确 //$fun = 'me\poet\test';//正确</span> <span>$fun</span><span>();<br> </span><span>//</span><span>也就是说,动态调用必须是 限定名称 或 完全限定名称(概念参考:PHP命名空间的使用基础)</span>
<span>/*</span><span> |------------------------------------- |二.魔术常量 和 操作符 |------------------------------------- </span><span>*/</span><span> namespace me\poet; </span><span>function</span><span> test() { </span><span>echo</span> '1'<span>; } </span><span>echo</span> __NAMESPACE__; <span>//</span><span>魔术常量:命名空间的名称(输出 me\poet) //namespace操作符:显式访问当前命名空间或子命名空间中的元素,等价于类中的self操作符</span> \<span>me\poet\test(); namespace\test(); //上两行代码等价。</span>
<span>/*</span><span> |------------------------------------------- |三.别名、导入 和 全局空间(含多个例子) |------------------------------------------- </span><span>*/</span><span> namespace ws\weichen\www; </span><span>use</span> ws\weichen\www <span>as</span> poet;<span>//</span><span>定义别名poet //use ws\weichen\www; //不加as,则取最后的作为别名(www)</span> <span>function</span><span> demo() { </span><span>echo</span> '1'<span>; } \ws\weichen\www\demo(); poet\demo(); </span><span>//</span><span>www\demo(); //不加as的情况,则这样调用 //以上三行代码效果一样。 //按规则(ws\weichen\www)命名的好处:若更换域名,只要把前缀名称改了就可以,不影响后面代码中别名www的使用。</span> /*--------------------------------------------------------*/<br> <span>/*</span><span> 导入 </span><span>*/<br></span> <span>include</span> 'hello.class.php'<span>; </span><span>use</span><span> \ws\weichen\www; </span><span>use</span><span> \Hello; <br>/*--------------------------------------------------------*/<br> </span><span>/*</span><span> 支持多个use语句 </span><span>*/<br></span> <span>use</span> \nihao\shijie <span>as</span> hello,<span> \ws\weichen\www; /*--------------------------------------------------------*/<br> </span><span>/*</span><span> 全局空间:反斜线调用 </span><span>*/</span><span> <br>namespace A\B\C; </span><span>//</span><span>这个函数是 A\B\C\fopen();</span> <span>function</span> <span>fopen</span><span>() { </span><span>$f</span> = \<span>fopen</span>('demo.txt');<span>//</span><span>调用全局fopen函数</span> <span>return</span> <span>$f</span><span>; }</span>
Link: http://www.cnblogs.com/farwish/p/3913784.html
@黑眼诗人