图中标识部分,如果命名空间 ABC被导入为C是什么意思?是指 use A\B\C as C吗?还有 use A\B\C 这种是否等同于 use A\B\C as C?
2 回答
叮当猫咪
TA贡献1776条经验 获得超12个赞
你这里说的
是指 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();
这也就是文中提到的转换的意思,也就是会转换成如上代码。
LEATH
TA贡献1936条经验 获得超6个赞
正常情况下我们需要使用命名空间AB下的C类,就需要使用如下语句
use A\B\C as C
这是最完整的写法。如果没有同名的C类,那么as C可以省略,因此通常我们直接写成
use A\B\C
如此而已。
- 2 回答
- 0 关注
- 466 浏览
添加回答
举报
0/150
提交
取消