如何让PHP包含自己的名称空间(如Python中的“来自导入MyClass”)?

如何让PHP包含自己的名称空间(如Python中的“来自导入MyClass”)?,php,python,import,module,namespaces,Php,Python,Import,Module,Namespaces,我对PHP有一点经验,但我主要来自Python。我非常喜欢Python处理模块的方式。如果我的目录中有一个名为a.py的文件,其中包含一个名为MyClass的类,我可以像这样简单地导入该类 from a import MyClass 然而,从PHP中,我知道您可以做到: include somefile.php 这将导入并运行文件中的所有代码,这与Python中的以下内容类似 from a import * 然而,执行通配符导入会让我对实际导入的内容一无所知,还会造成名称空间污染。所以我的

我对PHP有一点经验,但我主要来自Python。我非常喜欢Python处理模块的方式。如果我的目录中有一个名为a.py的文件,其中包含一个名为MyClass的类,我可以像这样简单地导入该类

from a import MyClass
然而,从PHP中,我知道您可以做到:

include somefile.php
这将导入并运行文件中的所有代码,这与Python中的以下内容类似

from a import *

然而,执行通配符导入会让我对实际导入的内容一无所知,还会造成名称空间污染。所以我的问题,;有没有一种方法可以通过命名来导入PHP中的类?

PHP中的好做法是每个文件一个类,而不是一个模块的同一文件中的所有类

例:


然后使用自动加载器,每当代码中需要类时,自动加载器就会启动并加载它。如果您不使用内置autoloader附带的框架,一个好的解决方案是使用composer提供的autoloader,即PHP的Dependency manager:

这就是您想要的。请记住,将名称空间与autoloader()结合使用意味着每个文件只能使用一个类。我不知道你为什么想要两个公共类在同一个文件中。
classes/mynamespace/mypackage/IO.php
classes/mynamespace/mypackage/DB.php
classes/mynamespace/mypackage/log.php
...