PHP命名空间use 引入何时发挥作用

<?php
namespace Beijing\dalou\bangong;
function display(){
    echo "Beijing<br/>";
}


namespace Usa\Wa;
function display(){
   echo "Usa<br/>";

}

use Beijing\dalou\bangong;
display();

我想请问下,在当前空间Usa\Wa下,use Beijing\dalou\bangong;意思不是把namespace Beijing\dalou\bangong空间下所有元素复制粘贴到Usa\Wa空间下吗?
display()属于非限定名称访问,
那么应该会自动寻找临近的空间访问,就是刚刚引入进来的Beijing\dalou\bangong空间下display()函数,
怎么显示的结果依然是echo 'Usa<br/>';

慕哥9229398
浏览 429回答 2
2回答

慕森王

不是很清楚为什么会有这种奇葩而且不清楚的写法表示,同样挺好奇为啥没报错;use其实就是一个include,把引入的命名空间的程序放到当前一起执行,大概是这样一个意思。放在一个文件里,我觉得定义命名空间没太大意义,如果要用的话,应该也是这样用: <?php namespace Beijing\dalou\bangong { function display(){ echo "Beijing<br/>"; } } namespace Usa\Wa { function display(){ echo "Usa<br/>"; } } namespace Test\Test { use Usa\Wa; Wa\display(); } 另外,既然用命名空间了,就应该遵循面向对象的编程方式,还用函数式编程,总觉得很奇怪。
打开App,查看更多内容
随时随地看视频慕课网APP