名称空间和使用之间有什么区别,我无法理解,我认为与'AS'一起使用是为名称空间创建快捷方式
我认为使用不带命名空间的使用必须包含/要求一些东西,但是屏幕截图中的这个示例使我感到困惑
Screenshot from 7:11 https://www.youtube.com/watch?v=sLFNVXY0APk
答案 0 :(得分:0)
在PHP中,名称空间是一个容器,其中封装了一些“东西”:函数类,接口或特征。这样做是为了避免命名冲突,因为在PHP(或大多数语言)中,您只能一次声明一次类/函数/接口/特征。
例如,您可以有一个名为Users
的类和另一个名为MyProject\Users
的类,因为第二个类具有一个命名空间,这可以防止与第一个类发生冲突。否则(在没有名称空间的情况下)您想要的将是模棱两可的,因此,如果尝试使用PHP,它将给出一个错误。
使用Use语句可让您使用命名空间,而无需引用整个内容。如果您是在全局或基本命名空间中,那么这两件事大致相等
new \MyProject\Users();
AND
use MyProject\Users
new Users();
第二个优点是,如果您决定更改名称空间,则只需要在Use语句中更改它,而不是更改名称空间中的每个类调用。除此之外,它的打字量要少得多,而且如果不需要的话,我们的程序员也不喜欢打字。
现在,对于AS关键字,您可以使用它来解决冲突,或仅缩短名称空间,例如:
use MyProject as M; //now M = MyProject
new M\Users(); // MyProject user class
new Users(); //base namespace user class
这确实与将代码导入PHP的方式无关,但是有一些命名约定(如PSR4)可以根据文件名空间正确放置文件。但这并不会根据您使用Use
的方式而改变。一般的“经验法则”是名称空间应与目录结构匹配,这样我们可以利用自动加载器,而不是在开始时包含每个文件。自动加载器仅在需要时加载类文件,正如我所说,这是基于正确命名和命名类和目录结构的基础。
我希望这是有道理的。