【问题标题】:When to include helper methods in a model (MVC)?何时在模型 (MVC) 中包含辅助方法?
【发布时间】:2009-09-09 21:50:57
【问题描述】:

我认为提出这个问题的最简单方法是根据我所面临的实际情况。

在我们的系统中,我们有一个站点模型(这里是经典的 MVC 框架),它表示 site 表中的一行。 site 表中存储在站点模型中的字段之一是站点的时区。我们使用它来将 UTC 日期时间从数据库调整到显示的站点时区。有一些辅助方法可以帮助完成此操作:utcDatetimeToSiteTimestamp()、utcTimeStampToSiteDatetime() 等。

由于这些辅助方法使用站点模型中保存的站点的时区,是否可以将这些方法包含在模型中?还是应该将它们放在单独的帮助类或其他东西中?

我知道模型应该做的不仅仅是保存数据库中的一行数据,但是作用于这些数据的辅助方法与使用这些数据作用于外部输入的辅助方法之间的界限在哪里?

感谢您的任何见解!

【问题讨论】:

    标签: php model-view-controller design-patterns model


    【解决方案1】:

    这是一个需要判断的问题。如果辅助方法是通用的并且可能在其他类中有用,则创建一个辅助类,因为这使代码可重用。如果辅助方法非常特定于所讨论的类,则将它们留在原处。

    【讨论】:

      【解决方案2】:

      答案在于责任范围。模型类负责了解如何向其中添加内容、修改其中的内容、从中删除内容以及何时以及如何更改其内部状态。
      那里没有关于转换的事情。转换器属于类外部。格式化对象或任何负责模型如何呈现给客户端的东西也是如此。

      【讨论】:

        【解决方案3】:

        我会创建一个辅助类,因为这些方法并不真正属于一个模型。它们将是静态方法,在我看来这是单独的帮助类的专业人士。

        【讨论】:

          【解决方案4】:

          我同意文森特·拉姆达尼的观点,因为这是一个判断问题。就我个人而言,我不喜欢在我的模型类中定义辅助函数——我认为它太乱了,而且它们根本不属于那里(而且我经常发现几乎没有任何辅助函数只使用一次)。然而,这并不是说我不在我的模型中使用 辅助函数。例如,如果我有一个 BlogPost 模型类,我的 getOneCompiled() 方法将使用辅助函数来组装一些链接,然后返回一个表示表格行的数组。

          查看您的选项很重要,看看哪些会产生易于阅读和维护的代码。在自己的文件中编写辅助函数可能需要更多的前期工作,但如果它使您的代码更易于管理,那当然是值得的。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2023-03-03
            • 2020-06-23
            • 1970-01-01
            • 2011-09-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多