我怀疑在PHP中加载依赖类的正确方式/最佳实践。
我通常将所有依赖项放在每个类的开头,并以类似于Java import的方式使用include_once。类似于:
include_once 'dto/SomeObjectDTO.php;'
include_once 'dao/SomeObjectDAO.php;'
include_once 'util/SomeObjectUtil.php;'
class SomeObjectService{
#class code here
}这是装入类的最佳方式吗?或者加载Bootstrap.php中的所有类?其他方式?
请注意,我说的是加载我自己的类,而不是像框架这样的复杂外部类。
发布于 2012-11-29 20:28:39
正如Homer6所说,自动加载是php内置的依赖加载机制。
PHP-FIG提出了一系列名为PSR的PHP编码标准。PSR-0处理类命名和自动加载。以下是一些链接:
另外,请记住,自动加载是有代价的。在建议的默认自动加载器中,有大量的字符串工作和与文件系统相关的工作(您可以实现自己的更快的自动加载器,但它不符合标准)。当你需要加载很多类时,这会使自动加载变慢。因此,如果你只需要加载2个类,你的方法会更快,更容易理解。
发布于 2012-11-29 20:22:07
你可以注册你的autoload方法。Symfony 2包含一个很好的类来做这件事。
http://php.net/manual/en/function.spl-autoload-register.php
我已经对它进行了修改,以便与我们编写的库一起使用。
https://github.com/homer6/altumo/blob/master/source/php/loader.php
https://github.com/homer6/altumo/blob/master/source/php/Utils/UniversalClassLoader.php
此调整允许您拥有不要求顶级名称空间具有相同文件夹名称的名称空间。
发布于 2012-11-29 20:26:15
从5.3版本开始,PHP就支持名称空间。这允许您拥有一个包和类层次结构,就像您在C++或Java中所知道的那样。
查看这些资源以了解更多信息:
http://www.php.net/manual/en/language.namespaces.basics.php
http://php.net/manual/en/language.namespaces.importing.php
https://stackoverflow.com/questions/13625707
复制相似问题