在与 Composer 会面之前,我使用的是 Zend 的自动加载器。
我有一个库(我们称之为 LibEx),它位于 PHP 的全局包含路径 ( c:\xampp\php\pear
) 中。它必须在全局包含文件夹中,因为很多项目都使用它。因此,如果我更改 LibEx 中的功能,每个项目都可以访问最新版本。
如果我想将我的代码推送到服务器,我只需将我的 LibEx 文件library
夹复制到 Zend 可自动加载的文件夹中。在 Composer 之前,我使用这种方法:
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/library'),
realpath(APPLICATION_PATH . '/library/Zend'),
get_include_path(),
)));
include "Zend/Loader/Autoloader.php";
Zend_Loader_Autoloader::getInstance()->registerNamespace('LibEx');
现在我爱上了 Composer。这真是太棒了,我也可以用它自动加载我的项目特定库:
"autoload": {
"psr-0": {"MyLib": "src/"}
}
但是如何自动加载不在 DocumentRoot 或 WebRoot 中的 LibEx 文件夹?即使它在服务器中并复制到src
文件夹下,如何仍然自动加载?