由于性能问题(基准测试),我正在尝试使用另一个自动加载器,而不是默认的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
答案 0 :(得分:1)
自动加载器没有“严重关联”。您可以随时使用您喜欢的每个PSR-0投诉自动加载器,但在这种情况下,您不应使用Zend_Loader_Autoloader
将自动加载器注册到Zend_Loader_Autoloader
以替换Zend_Loader_Autoloader
;)
spl_autoload_register($myAutoload);
答案 1 :(得分:1)
虽然不能单独回答Zend领导的这篇文章,Mathew,可能证明有助于演示如何放入替代自动加载器(以及更高效的自动加载器)