如何禁用Zend_Loader_Autoloader?禁用Zend自动加载器
回答
你可以手动强制自动装卸载,但是这可能会导致麻烦的组件取决于它正在注册:确保你的其他装载机覆盖。
spl_autoload_unregister(array('Zend_Loader_Autoloader','autoload'));
我剥这个从Zend_Loader_Autoloader的构造,并改变了它的上班族外,并注销而不是注册的装载机。
我会试试这个解决方案。我认为最合适。我不想使用Z_Autoloader :: unload()的东西,它似乎不能正常工作。 – powtac 2010-01-18 20:19:35
我必须在'$ application-> bootstrap() - > run();'之前插入'spl_autoload_unregister(array('Zend_Loader_Autoloader','autoload'));'。我必须通过'spl_autoload_register('__ autoload')注册我自己的自动加载;'这似乎工作。 – powtac 2010-01-29 10:59:10
有关在bootstrap.php中
protected function _initAutoloader()
{
$this->getApplication()
->getAutoLoader()
->unregisterNamespace("Zend");
// or
$this->getApplication()
->getAutoloader()
->removeAutoloader();
}
我建议使用自动装弹机的“推自动加载”的方法,它可以收到其他自动加载机实例,并调用它时,命名空间匹配的内容。因此,您可以使用自动加载器和zend的一个...
我不想同时使用,我已经检查过这个选项。我真的想禁用ZF Autoloader。 – powtac 2010-01-08 21:07:40
然后就是不要使用它(=不要调用require_once)。它不会在其他地方使用。 – 2010-01-10 10:14:52
@ tomas.fejfar当您不调用require_one时,将调用自动加载器。此外,他的问题是取消装载机以取代它。 – 2010-01-16 20:01:18
我假设您使用Zend_Application
,它会自动设置PHP环境,自动加载和自举。这非常方便。可悲的是,建立Zend_Autoloader
是硬编码到构造函数中,我看不出有什么方法来覆盖它:
public function __construct($environment, $options = null)
{
$this->_environment = (string) $environment;
require_once 'Zend/Loader/Autoloader.php';
$this->_autoloader = Zend_Loader_Autoloader::getInstance();
//snip
}
我的第一个建议是找到一种方法,使Zend_Autoloader
,和谐的其他自动加载工作。我一直使用Zend_Autoloader
与新的Doctrine::IsolatedClassLoader
没有问题。有关明确自动加载器命名空间或使用pushAutoloader()
的建议是有效的,并且应该有效。
但是,如果这不是一种选择,那么您应该放弃使用Zend_Application
,并自行处理环境设置和引导。虽然不便,但这不应该太困难。版本1.8之前的大多数ZF教程(这是介绍Zend_Application
时)提供了示例。
这里的幻灯片详细介绍一些这方面的(现在已经过时)组:
需要明确要求的唯一类。如何扩展Zend_Application并重写构造函数? – Karsten 2010-01-16 18:40:28
这是可能的,但是您需要考虑应用程序对象实例上调用getAutoloader()的任何其他代码。或者传入与zend自动加载器100%兼容的自己的加载器对象。 – 2010-01-18 13:28:53
如果您使用的Zend_Application,在你的index.php,创造ZA的实例后,你可以得到/设置要ZF使用自动加载磁带机:
$app = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/config.ini');
$app->getAutoloader()->setDefaultAutoloader('yourAutoloader');
$app->bootstrap()->run();
HTH
Zend_Loader :: registerAutoload('Zend_Loader',false);
它的框架文件http://framework.zend.com/manual/en/zend.loader.html#zend.loader.load.autoload
但是在,我不认为你应该离开,只要启用了Zend自动加载任何问题,因为您使用spl_autoload_register()注册你的自动加载回调所以它被添加到自动加载叠加。
使用spl_autoload_register,将调用所有回调以尝试满足请求。一旦回调成功,我不知道该链是否会中断。如果确实如此,则可能通过在回调中返回true或false来控制它。
记住,默认情况下,spl_autoload_register将压入堆栈的_end_。确保你指定prepend = true或所有其他自动加载器将被称为_before_你。 SPL自动加载器还检查每个调用之间是否存在class_exists(),如果找到该类,则断开链。 http://php.net/manual/en/function.spl-autoload-register.php – ReactiveRaven 2011-12-08 09:35:23
- 1. Zend自动加载器
- 2. Zend自动加载器不加载Zend类
- 3. 实现Zend Framework 2自动加载器
- 4. 使用zend自动加载器加载其他类
- 5. Zend Framework:禁用基本模型表的自动加载
- 6. Zend表格自动加载
- 7. Zend Framework 2自动加载
- 8. zend模块自动加载
- 9. 如何在自动加载器上加载Zend 2类
- 10. Zend 1.12中使用Composer自动加载器(用于加载外部库)?
- 11. 禁用懒加载教条zend框架?
- 12. 报告服务 - 禁用自动加载
- 13. 禁用视频的自动加载?
- 14. 扩展Yii自动加载器以加载使用Zend约定命名的类
- 15. 的Zend自动加载抽象类
- 16. Zend自动加载模型问题
- 17. Zend框架中的类自动加载
- 18. 在Zend中自动加载.obj.php文件?
- 19. 在zend框架中自动加载
- 20. Zend框架2:Lucene自动加载
- 21. Zend没有自动加载模型
- 22. Zend Framework自动加载3个模块
- 23. Zend框架的性能(自动加载)
- 24. Zend自动加载模型在PHPUnit
- 25. Zend框架问题自动加载
- 26. Zend Framework插件自动加载
- 27. 自动加载类“的Zend \装载机\ ClassMapAutoLoader”没有加载
- 28. 在Zend自动加载器中找不到PHPExcel类
- 29. 疑难解答Zend Framework自动加载器
- 30. Opcode(APC/XCache),Zend,Doctrine和自动加载器
为什么要在没有自动装载机的情况下使用ZF? – 2010-01-08 17:29:45
ZF只是我应用程序的一小部分。我使用其他自动装载机。 – powtac 2010-01-08 20:36:57