Контроллер может отправлять сообщения?


контроллера называется деятельности, у меня есть метод под названием напоминание.
Этот метод получает идентификатор, поиск той деятельности, на основе этого id и отправляет по электронной почте pro модератор этой деятельности с данным же.
Этот метод с 'ответственность слишком много"?

Я посылаю двух способов объединить уже другой вопрос. В конструкторе кода, какой из них является правильным? То, что посылает отделяет $client в переменную (reminder_a), или то, что всегда использует $activity, чтобы, если ссылки к клиентам (reminder_b)?

Следующий метод:

/**
 * Send the remember email with a resource
 * @param  int $id
 */
public function reminder_a($id)
{

    $activity   = $this->activities->getById($id);
    $client     = $activity->client;

    $title = 'Reminder of activity ' . $activity->name;
    $view  = 'emails.activity.reminder';
    $data  = ['activity' => $activity, 'cliente' => $client];
    CustomMail::sendBasicMail($view, $title, $activity->client->email, $data);

}


/**
 * Send the remember email with a resource
 * @param  int $id
 */
public function reminder_b($id)
{

    $activity = $this->activities->getById($id);

    $title = 'Reminder of activity ' . $activity->name;
    $view  = 'emails.activity.reminder';
    CustomMail::sendBasicMail($view, $title, $activity->client->email, $activity);

}   
Author: Rafael Soufraz, 2014-12-06

1 answers

Сила, может. Но это не рекомендуется.

Сравнение двух методов, мне кажется, что разница будет только через client, отдельно от activity, что у меня не было бы никакой необходимости, потому что это атрибут другого. Поэтому, мне кажется, что метод reminder_b - это более правильным.

Я Также не вижу никаких ошибок в применении принципа Single Responsibility Principle ("S" (SOLID), поскольку каждый метод контроллера имеет только ответственность, это отправить почты.

Единственное, что я изменил (а также выбрать метод reminder_b) будет инкапсулировать отправки почты, может быть, положить его в сервис. Контроллер должен рассматриваться только как точку входа вашего приложения (например, можно отправить письмо также с помощью командной строки), выполнить одну задачу и вернуть соответствующий ответ.

Я Надеюсь, что было ясно. :)

 3
Author: Rodrigo Rigotti, 2014-12-06 22:00:45