回答
zf2中的模塊與wordpress中的插件是類似的!它們是可以加載到項目中的不同類的集合,並允許在其他項目中重用通用代碼(這可以使用zf2中的composer),也可以將模塊簡單地用作項目中類似代碼的分組。
ZF2本身是模塊化的(我可以只加載一些我的項目中的模塊,它們被設計成獨立工作),但讓我們不要在這裏這樣做
composer.json
{
"name": "myApp",
"require": {
"php": ">=5.3.3",
"zendframework/zendframework": "~2.3.0",
"zf-commons/zfc-twig": "dev-1.2rc1"
},
"autoload": {
"psr-0": {
"Application": "module/Application/src/"
}
}
}
提供作曲家安裝我可以運行:
composer update
從命令行。如果你還沒有很多作曲家的經驗,那麼這個文檔還不錯https://getcomposer.org/doc/,但它是zf2開發必備的!
然後在你的應用程序的根目錄,你可以再添加到您的config.application.config.php模塊
return array(
'modules' => array(
'zfTwig',
'MyCustomModule',
),
}
現在,這些模塊都在你的項目中可用。欲瞭解更多信息,請參閱
http://www.michaelgallego.fr/blog/2013/01/21/some-tips-to-write-better-zend-framework-2-modules/
和
http://mwop.net/blog/267-Getting-started-writing-ZF2-modules.html
你也可以自己在應用程序級別添加模塊(正如我前面說的這些是多爲分組功能或任何你喜歡在一起) 。
你可以用它來幫助你建立個人模塊
https://github.com/zendframework/ZendSkeletonModule
剛剛發生的ZendSkeletonModule在ZF2應用程序的模塊文件夾,並更新所有的命名空間和模塊的根文件夾相匹配。在上面的application.config.php的情況下,你會將它重命名爲「MyCustomModule」。
控制器插件是完全不同的東西,他們只是被登記被注入到一個控制器基本上
他們可以在你的控制器被調用來執行某些任務的類。
例如,FlashMessenger插件允許您在控制器中的flash messenger中註冊一條消息,該消息將在下一頁加載時顯示。
從ZF2文檔
$this->flashMessenger()->addMessage('You are now logged in.');
return $this->redirect()->toRoute('user-success');
看到http://framework.zend.com/manual/2.0/en/modules/zend.mvc.plugins.html爲更詳細
模塊
模塊是一個應用程序內提供類似的功能的代碼的自包含集合。
這意味着模塊可以是任何你想要它們的東西(一個文件或你的整個應用程序!)。
'Modules'在ZF2中並不是新術語; 「模塊化編程」已經存在了很長時間。通過具有代碼功能的邏輯組,它將促進代碼重用和'open close principle'。
模塊在ZF2
模塊是Zend框架2內一等公民;這意味着該框架專門設計用於輕鬆添加和刪除模塊。
有很多examples of ZF2 modules online - (!代碼重用),其中大部分將需要次要的配置更改,您可以開始使用它們
插件
再一個通用術語,將有不同的含義不同構架。你可能聽說過'可插拔軟件',this answer很好的總結。
[設計你想要一個系統以直接和可預測的方式工作,具有非常具體的變化點。
'變異點'是代碼中可能需要更改或不同邏輯的區域。一個允許注入外部源而不修改基本代碼的系統被認爲是「可插入的」。
插件在ZF2
一個在ZF2「插件」實際上是被稱爲「Controller plugin」
它們被設計將功能添加到控制器(任何類擴展Zend\Mvc\Controller\AbstractActionController
)類,而不需要擴展控制器類。
這方面的一些示例是Zend\Mvc\Controller\Plugin\FlashMessenger
,它允許您向會話添加消息並將其顯示在重新加載的頁面上。這可以在所有控制器中重用,而無需修改它們。
謝謝!這很有幫助。 – user2740957
- 1. Java中的模塊,插件和組件有什麼區別?
- 2. 模塊中@和@@有什麼區別?
- 3. 使用Zend Framework,模塊和包裝之間有什麼區別
- 4. elasticsearch插件和elasticsearch模塊有什麼區別?
- 5. 開發Drupal模塊和WordPress插件有什麼區別?
- 6. 應用依賴和模塊依賴/插件有什麼區別?
- 7. Zend&CodeIgniter有什麼區別
- 8. Ansible模板模塊和複製模塊有什麼區別?
- 9. 插件和庫有什麼區別?
- 10. PhoneGap插件和addJavascriptInterface有什麼區別?
- 11. 寶石和插件有什麼區別?
- 12. 寶石和插件有什麼區別?
- 13. Foo級有什麼區別; end&Foo = Class.new(和模塊/模塊)?
- 14. 包括模塊和嵌入模塊有什麼區別?
- 15. Node.js的Cluster模塊和Learnboost的Cluster模塊有什麼區別?
- 16. Azure AD模塊和MS Online模塊之間有什麼區別
- 17. 這些NGINX模塊有什麼區別?
- 18. 對於cmake「include」命令,文件和模塊有什麼區別?
- 19. 有什麼區別:導入模塊和從模塊導入模塊?
- 20. IntelliJ中的SBT項目和Scala模塊有什麼區別?
- 21. maven中的繼承和子模塊概念有什麼區別?
- 22. Node.js MySQL模塊中的mysql.createConnection和mysql.createPool有什麼區別?
- 23. 在Node.js模塊中使用「exports」和「this」有什麼區別?
- 24. 7zip中7z.sfx和7zsd.sfx模塊有什麼區別?
- 25. 接口映射和中介模塊有什麼區別?
- 26. Python中的模塊和庫有什麼區別?
- 27. Linux內核模塊中module_init和init_module有什麼區別?
- 28. 構建模塊時,Julia中`using`和`import`有什麼區別?
- 29. 重新模塊中的組和組之間有什麼區別?
- 30. opencart中的擴展和模塊有什麼區別?
這是另一個很好的博客文章abouts模塊http://akrabat.com/zend-framework-2/modules-in-zf2/另一個必須閱讀! –
嘿!非常感謝精心解答。它有幫助。 – user2740957