我加入這個迴應既希望回答原來的問題,並對此處提交的一些項目提供一些說明。我是ZF 1.11中一個活躍的模塊開發人員,並且使用我將要在我們維護的幾個模塊之一中每天解釋的內容。
對於此回覆的長度,我很抱歉。有幾個項目需要考慮和考慮。
一,實施。
以下提供的片段據我所知提供〜1.8,並不會是你想要的1.11。
<?php
class Notifications_Bootstrap extends Zend_Application_Module_Bootstrap {
protected function _initLibraryAutoloader() {
return $this->getResourceLoader()->addResourceType('library', 'library', 'library');
}
}
下,雖然將工作提供優良下面我會介紹幾個關鍵要素。
protected function _initLibraryAutoloader() {
return $this->getResourceLoader()->addResourceType('library', 'library', 'Library_');
}
您會注意到第三個參數(名稱空間)略有差異。這樣做的最好的解釋將是可能更新的功能如下:
Array
(
[dbtable] => Array
(
[namespace] => Admin_Model_DbTable
[path] => /path/to/trunk/application/modules/admin/models/DbTable
)
[mappers] => Array
(
[namespace] => Admin_Model_Mapper
[path] => /path/to/trunk/application/modules/admin/models/mappers
)
[form] => Array
(
[namespace] => Admin_Form
[path] => /path/to/trunk/application/modules/admin/forms
)
[model] => Array
(
[namespace] => Admin_Model
[path] => /path/to/trunk/application/modules/admin/models
)
[plugin] => Array
(
[namespace] => Admin_Plugin
[path] => /path/to/trunk/application/modules/admin/plugins
)
[service] => Array
(
[namespace] => Admin_Service
[path] => /path/to/trunk/application/modules/admin/services
)
[viewhelper] => Array
(
[namespace] => Admin_View_Helper
[path] => /path/to/trunk/application/modules/admin/views/helpers
)
[viewfilter] => Array
(
[namespace] => Admin_View_Filter
[path] => /path/to/trunk/application/modules/admin/views/filters
)
[library] => Array
(
[namespace] => Admin_Library
[path] => /path/to/trunk/application/modules/admin/library
)
)
如果你比較這對以前的「庫」爲:
protected function _initLibraryAutoloader() {
$this->getResourceLoader()->addResourceType('library', 'library', 'Library_');
var_dump($this->getResourceLoader()->getResourceTypes());die;
}
輸出應該是類似的東西第三個參數,你會在第二個參數中看到它爲什麼會產生如此重要的差異。
重申,在這一點上,您已經聲明瞭一個庫類型,其前綴爲「Library_」,即翻譯爲「Admin_Library」。現在,爲了實現這一點,您可以像在主應用程序模塊中一樣在模塊中創建庫文件夾,只需稍作調整即可。要擁有管理員模塊特定的控制器操作(Admin_Library_Controller_Action),您將擁有庫/ Controller/Action.php,並且類名稱爲Admin_Library_Controller_Action。這是大多數人開始感到困惑的地方,但它與您應該在模塊中使用的其他資源命名空間非常相似。
總結技術說明。如果您沒有進一步閱讀,您將能夠擁有一個特定於您的模塊的庫,並且完全獨立,可以輕鬆複製/粘貼可重複使用模塊。
現在對於我在這裏看到的其他一些回覆的一些評論。
無窮指出
「如果你按照你的結構,你可能最終與 - 單詞數(LIB1,LIB3),所以你會開始複製需要的庫 - 模塊1(LIB1,LIB2)。」
這在技術上是正確的,但如果您發現自己經常使用同一個庫,那麼在您的實際開發風格中會帶來更多問題。我們通常將這些常用項存儲在另一個庫中,我們將它們用作外部的,與Zend相同,並放在Zend的一側放在主應用程序庫文件夾中。
假如你已經這樣做了,我相信可能需要一些額外的說明,如果你正確地使用了命名空間,你絕對不必擔心庫類名的衝突。你可能會在很短的時間內發現你需要在多個模塊中擁有相同代碼的類,但是一旦發生這種情況,除了上面提到的Zend之外,還應該考慮一下通用庫。
我對此回覆的長度再次表示歉意。我希望它能幫助任何可能遇到這篇文章的人需要模塊中的庫實現。
有點難說,因爲ZF1沒有模塊的想法。我在使用的testModule中看到的Bootstrap.php如何? – Jojo
目前它並沒有做任何事情,因爲所有Zend想要知道它在那裏,但如果我可以讓Zend知道我的模塊中有另一個庫,那將是一個非常理想的情況。 –