为了账号安全,请及时绑定邮箱和手机立即绑定

php手册中不理解的导入

php手册中不理解的导入

PHP
拉莫斯之舞 2019-03-13 22:46:25
图中标识部分,如果命名空间 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();

这也就是文中提到的转换的意思,也就是会转换成如上代码。

查看完整回答
反对 回复 2019-03-18
?
LEATH

TA贡献1936条经验 获得超6个赞

正常情况下我们需要使用命名空间AB下的C类,就需要使用如下语句

use A\B\C as C

这是最完整的写法。如果没有同名的C类,那么as C可以省略,因此通常我们直接写成

use A\B\C

如此而已。

查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 466 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信