2009-11-18 2 views
1

Я построил модель в некоторых из моих MVC веб-сайтов, чтобы помочь с отправкой электронной почты, как правило, я делаю что-то вроде этогоНеправильно используется Mail Model в 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'); 

Это второй один не читает, а мне .. я, конечно, мог бы передать массив названными ключей, чтобы сделать его более удобным для чтения.

Так ли моя модель Mail нарушает то, что модель должна быть в парадигме MVC?

ответ

1

так как этот вопрос отмечен как «kohana», возможно, вы уже знаете, что у kohana есть email helper, который делает именно то, что вы здесь делаете.

по сути, мой ответ заключается в том, что код для отправки электронной почты лучше подойдет как помощник.

1

Письмо не является моделью, я подозреваю, если вы не сохраните ее в базе данных или не выполните какую-то другую сложную обработку.

IMO, создающий объект в этом случае, вероятно, не очень «MVC», и ваш второй пример выглядит (по крайней мере для меня) более похожим на строку кода, которая указывает одноразовое действие без реальных бизнес-логических последствий ,

Но - не чувствуйте себя слишком ограниченными парадигмой! Какой из этих двух вариантов, по вашему мнению, легче читать, и проще для другого кодера следовать дальше?

0

Возьмите «_Model» с первого, и это будет иметь для меня прекрасный смысл. Реализация почтовой отправки как одной статической функции не дает вам никакой пользы от простого вызова mail(). вы столкнетесь с теми же проблемами, пытаясь установить дополнительные заголовки или отправить HTML-письмо, или добавить вложения, которые дополнительные методы в классе могут абстрагироваться от вашего кода вызова.