一般而言,您可以通過適當使用Zend_Loader_Autoloader
幾乎完全避免撥打require_once
。當然,關鍵是「適當的」。
通常,您的public/index.php
將include_path
設置爲library
文件夾。然後,如果您使用的是Zend_Application
,則Zend_Loader_Autoloader
已註冊以查找其名稱空間前綴已使用application/configs/application.ini
中的autoloadernamespaces
數組註冊的任何PSR-0 compliant classes。
棘手的部分是在不「駐留在包含路徑」文件中定義的類,就像出現在application/models
模型,駐留在application/services
服務等即使類中定義有傾向於遵循PSR- 0標準,PSR-0映射相對於基地off包含路徑的事實意味着系統必須知道類名前綴與基本路徑之間的映射。這是resource autoloaders進來的地方。這些資源自動加載器通常在應用程序Bootstrap中自動設置,擴展Zend_Application_Bootstrap_Bootstrap
和模塊引導程序,擴展Zend_Application_Module_Bootstrap
。
視圖助手是類「駐留在include_path」之外的另一個例子,可能類似於application/views/helpers
。由於通常使用簡寫形式$this->someHelper($someParam)
在視圖腳本中調用這些腳本,因此必須告知系統如何從此簡稱生成完全限定的類名。這是通過使用將名稱空間前綴映射到文件系統位置的$view->addPrefixPath()
完成的。同樣,應用程序級別和模塊級別的自舉機制也爲您設置了大部分。
對於不遵循PSR-0標準的庫/類,您可以創建custom autoloaders並將它們(通常在Bootstrap處)附加到Zend_Loader_Autoloader
單例。這是你明確包含/需要的唯一地方。
tl; dr:通過正確使用現有的ZF自動加載機制,您幾乎不需要在自己的應用程序代碼中包含include/require
語句。
我的問題給你...是否有助於你真正需要的解決方案?也許一個插件會更合適? – RockyFord