我试图在我的joomla项目中实现一个为PSR-0兼容的自动加载编写的库。但是joomla 2.5不支持PSR-0自动加载,所以我认为我必须编写自己的实现。
由于我想在我的整个joomla安装中使用我的类,所以我决定编写一个注册类onAfterInitialise()
的插件,但这就是它出错的地方:它覆盖了joomla的自动加载方法。
我试图实施的图书馆位于libraries/Zoho/CRM/ZohoClient.php
,有几个子文件夹。所有内容都按照PSR-0进行命名,因此从\Zoho\CRM
开始。
如何以可以在joomla中全局使用它们的方式注册类?这是我的实施:
public function onAfterInitialise()
{
spl_autoload_register(function ($className) {
$className = ltrim($className, '\\');
$fileName = '';
$namespace = '';
if ($lastNsPos = strripos($className, '\\')) {
$namespace = substr($className, 0, $lastNsPos);
$className = substr($className, $lastNsPos + 1);
$fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
}
$fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
require $fileName;
});
}
这显然不会起作用,因为它会覆盖joomla自动加载功能。我正在运行php5.3(3个月内5.4)