由于性能问题(基准测试),我尝试使用另一个自动加载器,而不是默认的 Zend_Loader_Autoloader。
我尝试了不同的方法,使用:
$autoloader->removeAutoloader(array('Zend_Loader_Autoloader', 'autoload'))
->setDefaultAutoloader(array($loader, 'loadClass'));
由于 Autoloader 与 Zend Framework 的大多数组件密切相关,因此我无法“删除它”。
我做了一个 Xdebug 一步一步调试,看起来 Autoloader 是这样工作的:
1) getInstance 2) 检查被调用的类根是否是已知的命名空间,以及是否存在自动加载器为其命名空间 3) 将非命名空间的自动加载器放入堆栈 4) 在每个自动加载器上尝试自动加载器,直到找到有效的。
但是,在我的情况下,我的自动加载器已经这样做了(我正在使用带有 classMap 策略的 Opl Autoloader),我已经用它们各自的路径注册了 namspace。
所以它看起来对我来说有点开销,因为我希望在绕过所有 Zend 检查的查找的非常乞求时使用我的自动加载器。
你有什么改进的想法吗?我如何在 Zend Framework 项目中有效地使用自定义(和高性能)自动加载器并使用 Zend_Loader_Autoloader