Zend_Loader_Autoloader_Resource
では、ファイルパスとクラス名の間のマッピングを定義できます。これにより、ファイルがインクルードパスに保存されていないクラスを自動ロードすることができます。
通常、モデル、フォームなどの共通のマッピングを設定するサブクラスZend_Application_Module_Autoloader
を使用します。特に、プラグイン用のエントリがあります。その後Application_Plugin_MyPlugin
という名前のクラスはファイルapplication/plugins/MyPlugin.php
に常駐します
protected function _initResourceLoader()
{
$resourceLoader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Application',
'basePath' => APPLICATION_PATH,
));
return $resourceLoader;
}
:ブートストラップでは、このようなものになるだろう。
特定の状況では、空の名前空間を使用しているようです。だからあなたのは次のようになります。
protected function _initResourceLoader()
{
$resourceLoader = new Zend_Application_Module_Autoloader(array(
'namespace' => '',
'basePath' => APPLICATION_PATH,
));
return $resourceLoader;
}
その後、あなたのプラグインクラスPlugin_AccessCheck
がファイルapplication/plugins/AccessCheck.php
に常駐します。
だけのリソースローダが前を作成していることを確認し、あなたのプラグインを登録/インスタンス化します
protected function _initAccessCheck()
{
$this->booststrap('resourceLoader');
$fc = Zend_Controller_Front::getInstance();
$fc->registerPlugin(new Plugin_AccessCheck());
}
http://framework.zend.com/manual/en/zend.controller.plugins.htmlはあなたの応答をあなたに@デビッドWeinraubありがとうございます。出来た。これはapplication.iniで行うことができますか? Zend_Application_Module_Autoloaderは、指定されたディレクトリ内のすべてのPHPファイルをロードするか、インクルードパスに単にディレクトリを追加しますか?名前空間を使用していたらどうなりますか?どのような違いがありますか? – ryy705
プラグインは 'application.ini'を使って' resources.frontController.plugins.accesscheck = "Application_Controller_Plugin_AccessCheck" 'のように登録することができます。しかし、それはコンストラクタparamsなしのプラグインに対してのみ機能します。それ以外の場合は、コードを使用してインスタンス化/登録する必要があります。明示的に指定するプラグインのみを登録し、すべてのプラグインはそのフォルダに登録しません。リソースオートローダーに与えられた名前空間の値 - この場合、 ''Application''は、ロードするクラス名とそれらを探す場所の間のマッピングの一部です。 –