我正在按照一个教程,我认为这个教程是由一个不知道他在做什么的人编写的(已经发现了两个明显的错误而其余的代码都很混乱)。但我不想完全诋毁这个人,所以我在这里问一些我不理解的事情。
首先,我会发送100个布朗尼点, 我的2只宠物,还有一盒巧克力 无论谁能向我解释是什么 继续使用此代码。
他正在使用基于模块的架构。模块名称为frontmodule
。模块有MVC。并且模块具有自己的内部library
。
/modules/
/frontmodule/
/models/
/views/
/controllers/ -- the /module controller is here (undestandable)
/library/
/Controller/ -- the /module/library controller is here (why?!)
/Action/
首先是令人困惑的部分。为什么每个模块都有一个内部库,以及为什么那个内部库有自己的controllers
和actions
。这是最佳做法吗?我想这个库可以移动到模块可以使用的插件。不确定..
现在出现了有趣的部分....除了每个模块都有自己的内部库之外,还有一个由所有模块共享的公共库(请参阅下面与{相同的文件夹级别) {1}})并且Common库也有自己的控制器和动作(就像每个内部库都有自己的控制器和动作一样)
/modules
所以我们有3个控制器:
现在这里是疯狂部分,我认为这会使生活过于复杂
他说:模块控制器扩展了 模块的库父控制器 这也扩展了公共库 控制器。
/modules
/library/
/Common/
/Controller/ -- the /common/library controller is here (why?!)
/Action/
/Helper/
/Plugin/
所以我想:
class IndexController
extends Frontoffice_Library_Controller_Action_Abstract { ... }
abstract class Frontoffice_Library_Controller_Action_Abstract
extends Custom_Controller_Action_Abstract { ... }
IndexController
Frontoffice_Library_Controller_Action_Abstract
其中Custom_Controller_Action_Abstract
扩展module controller
和module internal library's controller
延伸module internal library's controller
以前有人见过这样的事吗?我的猜测是这个代码不容易维护,但是那些对zend更有经验的人可以告诉我这个人想要实现的目标。应用程序结构有点过于混乱。我认为他滥用MVC而不是用它来简化应用程序及其可维护性。
答案 0 :(得分:16)
答案 1 :(得分:15)
这太疯狂了。你正在制作网页,对吗?这并不难。我说你发布的东西是过度工程的定义:
答案 2 :(得分:10)
根本不是疯了。也许是严重或过度设计,但它可能是一个有用的设置。
这只是两个“额外”的继承级别,在某些情况下可能非常有意义。
但一般来说,这表明在控制器中包含了大量的逻辑,这通常是糟糕的设计。
答案 3 :(得分:0)
通过这种方式,您可以将逻辑应用于:
a)特定的控制器
b)一个模块中的所有控制器
c)所有应用程序控制器