【发布时间】:2014-03-27 09:24:04
【问题描述】:
我在 stackoverflow 和谷歌上搜索了很多东西来找到这个问题的答案。但是找不到任何东西...
所以,我的问题是:在一个模块中扩展一个控制器(在我的情况下是来自 zfcuser 的 BaseUserController),然后在另一个模块中再扩展一次,这是一个好习惯吗?
感谢您的所有回复!
【问题讨论】:
标签: model-view-controller controller zend-framework2
我在 stackoverflow 和谷歌上搜索了很多东西来找到这个问题的答案。但是找不到任何东西...
所以,我的问题是:在一个模块中扩展一个控制器(在我的情况下是来自 zfcuser 的 BaseUserController),然后在另一个模块中再扩展一次,这是一个好习惯吗?
感谢您的所有回复!
【问题讨论】:
标签: model-view-controller controller zend-framework2
没关系,我不会说“好的做法”。
过度使用继承可能会导致任何语言出现问题,有numerous of post around explaining the issues and possible solutions。
从 ZF2 的角度来看,这样做您会遇到 Module B 依赖于 Module A 的问题,这可能是个问题 - 但这实际上取决于您的应用程序/模块设计。
还有其他选择:
聚合 - 通过获取其他类并将它们组合成一个新类来创建新功能。为这个新类附加一个通用接口,以实现与其他代码的互操作性。
使用PHP traits - 如果您有幸使用最新版本的 (PHP 5.4+),您可以在每个需要它的控制器类中简单地重复使用这些。
自定义Controller Plugin - ZF2 在控制器中有一个“可插入” API,这意味着您可以编写自包含的帮助类,然后可以在任何控制器中使用 - 无需扩展。您几乎可以肯定已经将它们与$this->redirect() 或$this->params() 一起使用,因此它们可能是开始了解它们是如何构建的好地方。
【讨论】: