如何让PHP包含自己的命名空间(比如Python中的“从导入MyClass”)


How to give a PHP-include its own namespace (like "from a import MyClass" in Python)?

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

from a import MyClass

然而,从PHP,我知道你可以做:

include somefile.php

这将从文件中导入并运行所有代码,这使得它类似于Python 中的以下代码

from a import *

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

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

例如:

classes/mynamespace/mypackage/IO.php
classes/mynamespace/mypackage/DB.php
classes/mynamespace/mypackage/log.php
...

然后你使用一个自动加载器,每次你在代码中需要一个类时,自动加载器就会启动并加载它。如果你没有使用自带自动加载器的框架,一个好的解决方案是使用composer提供的自动加载器,composer是PHP的depedncy管理器:http://getcomposer.org/