資源僅僅是一個名稱對應一個組件的命名空間(追加到自動加載器的命名空間)和路徑(相對的自動加載器的基本路徑),例如可以這樣:
$loader = new Zend_Application_Module_Autoloader(array( 'namespace' => 'Blog', 'basePath' => APPLICATION_PATH . '/modules/blog',));
path/to/some/resources/|-- forms/| `-- Guestbook.php // Foo_Form_Guestbook|-- models/| |-- DbTable/| | `-- Guestbook.php // Foo_Model_DbTable_Guestbook| |-- Guestbook.php // Foo_Model_Guestbook| `-- GuestbookMapper.php // Foo_Model_GuestbookMapper
$loader = new Zend_Loader_Autoloader_Resource(array( 'basePath' => 'path/to/some/resources/', 'namespace' => 'Foo',));
Zend_Loader_Autoloader_Resourse::addResourceType()有三個參數:資源名稱,指定的資源路徑的相對資源路徑名, 資源類型組件前綴。
在上面的樹,我們有三種資源類型:form(在子目錄forms中,資源前綴是Form),model(在子目錄models中,資源前綴是Model),并dbtable(在子目錄“models/DbTable”中,資源前綴是“Model_DbTable”)。
具體定義如下:
$loader->addResourceType('form', 'forms', 'Form') ->addResourceType('model', 'models', 'Model') ->addResourceType('dbtable', 'models/DbTable', 'Model_DbTable');
$resourceLoader = new Zend_Loader_Autoloader_Resource(array( 'basePath' => 'path/to/some/directory', 'namespace' => 'My', 'resourceTypes' => array( 'acl' => array( 'path' => 'acls/', 'namespace' => 'Acl', ), 'form' => array( 'path' => 'forms/', 'namespace' => 'Form', ), 'model' => array( 'path' => 'models/', 'namespace' => 'Model', ), ),));
使用以定義資源
$form = new Foo_Form_Guestbook();$guestbook = new Foo_Model_Guestbook();
模塊中的資源自動加載
Zend Framework的MVC鼓勵使用“modules”,模塊默認情況下,通常有一些資源類型,Zend Framework提供了一個模塊的標準目錄布局。在這種范式中,資源自動加載器非常有用,他們是默認啟用的。
模塊的基本目錄結構:
<modulename> configs/ application.ini controllers/ helpers/ forms/ layouts/ filters/ helpers/ scripts/ models/ services/ views/ filters/ helpers/ scripts/ Bootstrap.php