php名称空间:什么需要合格?

时间:2015-06-28 20:51:09

标签: php oop namespaces

我不熟悉在PHP中使用命名空间,看起来很简单。但是,当我在包含类,接口和闭包的大文件的顶部添加名称空间时,代码完全停止工作。显然有些元素没有合格。

例如:

<?php
namespace MyNamespace;
interface MyInterface { ... }
class MyClass implements MyInterface { ... }
...

我在php.net上阅读了文档,但是我找不到一个简单的元素列表,需要在一个命名空间(全局或其他)下进行限定。

所以我的问题是,如果你只是在一个无命名空间的文件的顶部声明一个命名空间,那么在那个场景中哪些元素需要限定?

1 个答案:

答案 0 :(得分:0)

现在,您可以将所有内容放在一个文件中,该文件中的每个类,接口或函数现在都位于MyNamespace命名空间中。因此,从这些类,接口和函数中,如果要引用位于不同命名空间(全局或命名)的类,则必须使用它的完全限定名称(或使用use语句在文件顶部声明别名)。注意:预先挂起\将使您进入全局命名空间。

此外,从文件外部,如果要访问其中一个类,接口或函数,则必须使用完全限定名称。

MyNamespace\MyInterface
MyNamespace\MyClass

我还应该提一下,这不是一个典型的设置。根据psr标准,每个文件应该只有1个类。请查看http://www.php-fig.org/以获取有关标准和实践的更多指导。