現在、アプリケーション(Zendフレームワーク1.11に基づく)をモジュラー構造に再編成しており、モジュールのオートローダーが登録される前に、モジュール内のリソースを使用できるようにする必要があるという問題に直面しています。
たとえば、ユーザーのログインステータスを確認するためのフロントコントローラープラグインがあります。
class Application_Plugin_LoginCheck extends Zend_Controller_Plugin_Abstract {
public function preDispatch(Zend_Controller_Request_Abstract $request) {
// ACL-lookup code which ultimately retrieves Othermodule_Model_User
// from session
// Othermodule_Model_User is not defined
}
}
Othermodule_Model_User
この時点で利用可能である必要がありますが、のオートローダーOthermodule
はブートストラップシーケンスまで登録されないようです。
同様に、この同じ問題により、特定のモジュールのブートストラップクラスで別のモジュールからクラスを使用できなくなります。
Zend Frameworkアプリケーションでこの種のセットアップを実現する適切な方法は何ですか?
ブートストラップは、Zendのアプリケーションブートストラップクラスとモジュールブートストラップクラスを使用して実行されています。以下に例を示します-私たちは異常なことをしているとは思いません。
アプリケーションのブートストラップ:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
protected function _initDb() {...}
protected function _initConfig() {...}
protected function _initLog() {...}
protected function _initMvcStaticRoutes() {...}
protected function _initRestRoute() {...}
protected function _initTranslate() {...}
public function _initActionHelpers() {...}
public function _initViewHelpers() {...}
}
モジュールのブートストラップ:
class Account_Bootstrap extends Zend_Application_Module_Bootstrap {
protected function _initTranslate() {
...
}
}
プラグインはアプリケーション構成に登録されています
resources.frontController.plugins.logincheck.class = "Application_Plugin_LoginCheck"