【发布时间】:2012-09-09 02:39:53
【问题描述】:
我正在使用 CodeIgniter 和 wiredesignz 的 HMVC 扩展。
我的网络应用主要处理文本文章。我有一个名为articles 的模块。文章模块的模型articles_model 包含对文章进行数据库更改的函数。例如,以下内容将更新文章:
$this->articles_model->update_article();
用户仪表板还有另一个模块。用户有时会从他们的仪表板中更新文章。该请求是从仪表板控制器发出的,因为此操作是从仪表板模块中的视图执行的。
在这种情况下,我应该如何让仪表板控制器与文章模型进行通信?到目前为止,我遇到的几个选项是:
在文章控制器中创建一个
update_article()函数。它所做的只是调用同名的articles_model函数。让仪表板控制器调用文章控制器函数update_article()。之所以会这样做,是因为我已经读过在模块化设计中,控制器应该是不同模块之间的通信点 (source)。我还遇到过其他观点,即控制器永远不应该互相交谈。因此我很困惑。我还可以在
dashboard_model中复制update_article()函数。这样,仪表板控制器只需在自己的模块中调用自己的模型。我的直觉告诉我这不是要走的路,因为update_article()函数不仅被仪表板控制器调用,而且还有很多其他函数。这会导致大量重复代码。
感谢任何建议。
【问题讨论】:
-
您描述的设置似乎有点混乱,但
DRY绝对适用于此。由于设计限制导致的重复代码是一种严重的设计气味。 -
设置基本上归结为 2 个模块,每个模块代表系统中的一个实体(文章和用户仪表板)。我如何让他们交流?
标签: php codeigniter module codeigniter-2 hmvc