1

我在我的一些 MVC 网站中建立了一个模型来帮助发送电子邮件,通常我会做这样的事情

$mail = new Mail_Model;
$mail->to('me@somewhere.com');
$mail->from('you@somewhere.com');
$mail->subject('hello');
$mail->body('hello how are you');
$mail->send();

我知道该模型旨在对数据进行建模 - 那么我所做的是否违反了这一点?它应该是一个助手类吗?就像是...

Mail::send('me@somewhere.com', 'you@somewhere.com', 'hello', 'hello how are you');

第二个对我来说读起来不太好……当然,我可以传入一个带有命名键的数组以使其更具可读性。

那么我的邮件模型是否违反了 MVC 范式中的模型?

4

3 回答 3

1

我怀疑,邮件并不是真正的模型,除非您将其保存到数据库或对其进行其他复杂的处理。

IMO,在这种情况下实例化一个对象可能不是很“MVC”,你的第二个例子看起来(至少在我看来)更像是一行代码,它表示一个一次性的操作,没有真正的业务逻辑影响。

但是——不要太受范式的束缚!您认为这两个选项中的哪一个更容易阅读,并且以后其他编码人员也更容易遵循?

于 2009-11-18T05:34:13.350 回答
1

因为这个问题被标记为“kohana”,所以您可能已经知道 kohana 有一个电子邮件助手,可以完全按照您在此处执行的操作。

本质上,我的回答是发送电子邮件的代码更适合作为助手。

于 2009-11-18T12:52:15.757 回答
0

从你的第一个模型中去掉“_Model”,这对我来说很有意义。将邮件发送实现为单个静态函数并没有比调用 mail() 带来任何好处,真的。尝试设置额外的标题、发送 HTML 电子邮件或添加附件,类上的额外方法可以从调用代码中抽象出来,您最终会遇到同样的问题。

于 2009-11-18T07:29:01.973 回答