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

Module Zend中的插件和模块有什么区别?,module,zend-framework2,Module,Zend Framework2,如果我在word press上下载聊天软件,它被称为插件。在Zend框架中,它被称为模块,但也有用于控制器的插件 Zend中的模块和插件有什么区别?zf2中的模块类似于wordpress中的插件是!它们是不同类的集合,可以加载到项目中,并允许在其他项目中重用通用代码(这将在zf2中使用composer),或者模块可以简单地用作项目中类似代码的分组 zf2本身是模块化的(我可以在我的项目中加载一些模块,它们是设计为独立工作的),但这里不允许这样做 composer.json { "name":

如果我在word press上下载聊天软件,它被称为
插件
。在Zend框架中,它被称为
模块
,但也有用于控制器的插件


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

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
从命令行。如果您对composer没有太多经验,文档还不错,但它是zf2开发的必备工具

然后在应用程序的根目录中,您可以将模块添加到config.application.config.php

return array(
'modules' => array(
    'zfTwig',
    'MyCustomModule',
),
}
现在这些模块在您的项目中可用。有关更多信息,请参阅

您还可以自己在应用程序级别添加模块(正如我前面所说的,这些模块更多是用于将功能分组或其他您喜欢的功能组合在一起)

您可以使用它来帮助构建您的个人模块

只需将ZendSkeletonModule放在zf2应用程序的模块文件夹中,并更新模块的所有名称空间和根文件夹以匹配。对于上面的application.config.php,您可以将其全部重命名为“MyCustomModule”

控制器插件是完全不同的,它们只是一个注册后注入控制器的类

可以在控制器中调用它们来执行某些任务

例如,FlashMessenger插件允许您在控制器内的FlashMessenger中注册一条消息,该消息将在下一页加载时显示

来自zf2文档

$this->flashMessenger()->addMessage('You are now logged in.');
return $this->redirect()->toRoute('user-success');

有关更多详细信息,请参见模块

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

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

“模块”在ZF2中不是新术语;“模块化编程”由来已久。通过具有代码功能的逻辑组,它将促进代码重用和“”

ZF2中的模块

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

有很多-其中大多数需要进行轻微的配置更改,您可以开始使用它们(代码重用!)

插件

这是一个通用术语,在不同的框架中有不同的含义。你可能听说过“可插拔软件”,很好地总结了它

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

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

ZF2中的插件

ZF2中的“插件”实际上称为“

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


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

这是另一篇关于其他必须阅读的模块的好博文!嘿非常感谢你详尽的回答。这很有帮助,谢谢你!这很有帮助。