Tec*_*hie 1 php alias namespaces
我一直在阅读有关使用命名空间: PHP中的别名/导入的内容.有两件事我不明白.
它说,
请注意,对于命名空间名称(包含命名空间分隔符的完全限定的命名空间名称,例如Foo\Bar而不是全局名称,例如FooBar),前导反斜杠是不必要的,不建议使用,因为导入名称必须是完全限定的,并且不会相对于当前名称空间进行处理.
有人可以解释一下
它实际上意味着它所说的并在示例中显示.导入命名空间类时,应省略第一个反斜杠:
use My\Full\Classname as Another; // recommended
use \My\Full\Classname as Another; // not recommended
Run Code Online (Sandbox Code Playgroud)
原因是use需要一个完全限定的命名空间.您不能使用相对路径.换句话说,如果你已经在My\命名空间中,你就不能use Full\Classname.
在PHP世界中,名称空间旨在解决库和应用程序的作者在创建可重用的代码元素(如类或函数)时遇到的两个问题:
- 命名您创建的代码与内部PHP类/函数/常量或第三方类/函数/常量之间的冲突.
- 能够别名(或缩短)Extra_Long_Names,旨在缓解第一个问题,提高源代码的可读性.
因此,目的是缩短和/或避免冲突,例如当你有两个名为Foo的类并且需要同时使用它们时,你必须有办法解决这个冲突(至少如果你不想使用每次完全限定名称):
use My\Very\Long\Namespaced\Class\Named\Foo as Foo;
use My\Other\Foo as OtherFoo;
Run Code Online (Sandbox Code Playgroud)
然后你可以使用
$foo = new Foo;
$otherFoo = new OtherFoo;
Run Code Online (Sandbox Code Playgroud)
所以这简短而且不会发生冲突.真的没有更多的东西.