Zend中的插件和模块有什么区别?

时间:2014-06-23 10:45:56

标签: module zend-framework2

如果我按下单词下载聊天软件,则称为Plugin。在Zend Framework中,它被称为Module,但也有控制器的插件。

Zend中模块和插件之间的区别是什么?

2 个答案:

答案 0 :(得分:1)

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,我可以运行:

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应用程序的module文件夹中,然后更新所有名称空间和模块的根文件夹即可。对于我在上面的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了解更多详情

答案 1 :(得分:1)

<强>模块

  

模块是一个自包含的代码集合,在应用程序中提供类似的功能。

这意味着模块可以是您想要的任何模块(一个文件或整个应用程序!)。

&#39;模块&#39;不是ZF2中的新术语; &#34;模块化编程&#34;已经存在了很长时间。通过拥有逻辑的代码功能组,它将促进代码重用以及open close principle&#39;。

ZF2中的模块

模块是Zend Framework 2中的一等公民;这意味着该框架专门设计用于能够轻松添加和删除模块。

有许多examples of ZF2 modules online - 其中大部分需要进行少量配置更改,您可以开始使用它们(代码重用!)

<强>插件

同样是一个在不同框架中具有不同含义的通用术语。您可能已经听说过可插拔软件&#39;,this answer很好地总结了它。

  

[何时设计]您希望系统以直接且可预测的方式工作,具有非常具体的变化点。

变异点&#39;代码中可能需要更改或不同逻辑的区域。允许在不修改基本代码的情况下注入外部源的系统被认为是可插拔的。

ZF2中的插件

A&#39;插件&#39;在ZF2中实际上称为&#39; Controller plugin&#39;

它们是用于向控制器(任何扩展Zend\Mvc\Controller\AbstractActionController的类)添加功能的类,而无需扩展控制器类。

这方面的一些例子是Zend\Mvc\Controller\Plugin\FlashMessenger,它允许您向会话添加消息并在重新加载的页面上显示它。这可以在所有控制器中重用,无需修改它们。