Zend_Loader_Autoloader_Resource
允許您定義文件的路徑和類名之間的映射。這允許您自動加載其文件未存儲在包含路徑中的類。
通常情況下,你會用它建立了模型,表格等。特別是一些常見的映射子類Zend_Application_Module_Autoloader
,它具有插件的條目。在引導,這將是這樣的:
protected function _initResourceLoader()
{
$resourceLoader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Application',
'basePath' => APPLICATION_PATH,
));
return $resourceLoader;
}
了一個名叫Application_Plugin_MyPlugin
類將駐留在文件application/plugins/MyPlugin.php
英寸
在你的具體情況,它看起來像您使用的是空的命名空間。所以,你的是:
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());
}
謝謝@大衛溫勞布你的迴應。有效。這可以通過application.ini完成嗎? Zend_Application_Module_Autoloader是否加載指定目錄中的所有PHP文件,或者只是將目錄添加到包含路徑中?如果我使用命名空間怎麼辦?那會有什麼不同? – ryy705
您可以使用'application.ini'註冊插件,例如:'resources.frontController.plugins.accesscheck =「Application_Controller_Plugin_AccessCheck」'。但它只適用於沒有構造函數參數的插件。否則,您需要通過代碼實例化/註冊。它只會註冊你明確指定的插件,而不是文件夾中的所有插件。賦予資源自動加載器的名稱空間值 - 在這種情況下爲應用程序 - 是類名之間映射的一部分,以便加載和查找它們。 –