图中标识部分,如果命名空间 ABC被导入为C是什么意思? 是指 use A\B\C as C吗? 还有 use A\B\C 这种是否等同于 use A\B\C as C?
拉莫斯之舞
浏览 467回答 2
2回答
叮当猫咪
你这里说的
是指 use ABC as C吗?是对的,
然后
还有 use ABC 这种是否等同于 use ABC as C?
是等效的;
我来说一下为什么会用use ABC as C这种情况,可能才有意义;
举个例子:
namespace Hello{
class Test {
public function test() {
echo 'Hello\Test';
}
}
}
namespace World{
class Test {
public function test() {
echo 'World\Test';
}
}
}
这里是两个命名空间,假设在要同时引入这两个命名空间;
use Hello\test;
use World\test;
在调用的时候
(new Test())->test();
我其实是不知道到底是调用的那个命名空间的,会引发歧义,所以我也就需要用到别名引入了:
use Hello\Test as TestA;
use Hello\Test as TestB;
然后
(new TestA())->test();
(new TestB())->test();
就很清晰明了了。然后,为什么说等同呢,实际上就是
(new Hello\Test())->test();
(new World\Test())->test();
这也就是文中提到的转换的意思,也就是会转换成如上代码。