如何禁用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