php手册中不理解的导入

图片描述

图中标识部分,如果命名空间 ABC被导入为C是什么意思?
是指 use A\B\C as C吗?
还有 use A\B\C 这种是否等同于 use A\B\C as C?

阅读 2.2k
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();

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

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

use A\B\C as C

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

use A\B\C

如此而已。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题