Контроллер может отправлять сообщения?
контроллера называется деятельности, у меня есть метод под названием напоминание.
Этот метод получает идентификатор, поиск той деятельности, на основе этого 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);
}
1 answers
Сила, может. Но это не рекомендуется.
Сравнение двух методов, мне кажется, что разница будет только через client
, отдельно от activity
, что у меня не было бы никакой необходимости, потому что это атрибут другого. Поэтому, мне кажется, что метод reminder_b
- это более правильным.
Я Также не вижу никаких ошибок в применении принципа Single Responsibility Principle ("S" (SOLID), поскольку каждый метод контроллера имеет только ответственность, это отправить почты.
Единственное, что я изменил (а также выбрать метод reminder_b
) будет инкапсулировать отправки почты, может быть, положить его в сервис. Контроллер должен рассматриваться только как точку входа вашего приложения (например, можно отправить письмо также с помощью командной строки), выполнить одну задачу и вернуть соответствующий ответ.
Я Надеюсь, что было ясно. :)