2009-11-18 24 views
1

我已經內置了一些我的MVC網站,以協助發送電子郵件的模式,一般我做這樣的事情在MVC中使用郵件模型不正確?

$mail = new Mail_Model; 
$mail->to('[email protected]'); 
$mail->from('[email protected]'); 
$mail->subject('hello'); 
$mail->body('hello how are you'); 
$mail->send(); 

我知道模型是爲了數據進行建模 - 所以就是我正在做一個違反了嗎?它應該是一個幫手類嗎?喜歡的東西...

Mail::send('[email protected]', '[email protected]', 'hello', 'hello how are you'); 

這第二個不讀也給我..我當然可以通過與一個名爲密鑰的陣列,以使其更具可讀性。

那麼,我的郵件模型違反模型應該在MVC模式?

回答

1

由於此問題標有'kohana',也許你已經知道kohana有一個email helper,它完全符合你在這裏所做的。

本質上,我的答案是發送電子郵件的代碼更適合作爲幫手。

1

郵件並不是一個真正的模型,我懷疑,除非您將它保存到數據庫或使用它進行一些其他複雜的處理。

IMO,在這種情況下實例化一個對象可能不是'MVC',而你的第二個例子看起來(至少對我來說)更像是一行代碼,表示一次性動作,沒有真正的業務邏輯反響。

但是 - 不要被範式所束縛!您認爲這兩種選擇中的哪一種更易於閱讀,並且更容易讓其他編碼人員隨後使用?

0

從你的第一個'_Model'取下,這對我來說會很有意義。 實現郵件發送作爲一個單一的靜態函數,不僅僅是調用mail(),你真的沒有什麼好處。你最終會遇到同樣的問題,試圖設置額外的標題,或者發送HTML電子郵件,或者添加附件,以便類中的額外方法可以從你的調用代碼中抽象出來。