Php 何时在模型(MVC)中包括辅助方法?

Php 何时在模型(MVC)中包括辅助方法?,php,model-view-controller,design-patterns,model,Php,Model View Controller,Design Patterns,Model,我想问这个问题最简单的方法就是面对现实世界的情况 在我们的系统中,我们有一个站点模型(这里是经典的MVC框架),它表示站点表中的一行。站点模型中存储的站点表字段之一是站点的时区。我们使用它将数据库中的UTC日期时间调整为站点显示的时区。有几个辅助方法可以帮助实现这一点:utcDatetimeToSiteTimestamp()、utcTimeStampToSiteDatetime()等 由于这些辅助方法使用站点模型中包含的站点时区,因此可以在模型中包含这些方法吗?或者应该将它们放在一个单独的助手类

我想问这个问题最简单的方法就是面对现实世界的情况

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

由于这些辅助方法使用站点模型中包含的站点时区,因此可以在模型中包含这些方法吗?或者应该将它们放在一个单独的助手类或其他什么东西中

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


谢谢你的洞察力

我将创建一个helper类,因为这些方法实际上不属于一个模型。它们将是静态方法,在我看来,这是一个单独的助手类的专业

答案在于责任领域。模型类负责知道如何向其中添加内容、修改其中的内容、从中删除内容,以及何时和如何更改其内部状态。

没有关于转换的内容。转换器属于类的外部。格式化对象或任何负责如何向客户机表示模型的事情也是如此。

这是一个需要判断的问题。如果helper方法是通用的,并且在其他类中可能有用,那么创建一个helper类,因为这样可以使代码重用。如果helper方法非常特定于所讨论的类,那么就把它们放在那里。

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

查看您的选项,并查看哪些选项将生成易于阅读和维护的代码,这一点很重要。在它自己的文件中编写helper函数可能需要更多的前期工作,但是如果它使代码更易于管理,那么它肯定是值得的