Codeigniter сделать отправку электронной почты DRY с помощью библиотеки или помощника?

Я пытаюсь обдумать, когда использовать пользовательские библиотеки против пользовательских помощников против обычных старых контроллеров в Codeigniter. Насколько я понимаю, пользовательский помощник должен больше походить на маленькие функции для выполнения простых повторяющихся задач, где библиотека может быть полноценным классом.

В качестве примера я хочу использовать собственный класс электронной почты в CI, но я думаю, что я буду использовать это на множестве различных контроллеров и хочу, чтобы он был максимально «СУХИМ». Имеет ли смысл абстрагировать код для отправки электронного письма помощнику или библиотеке? или мне просто повторить это в нужных контроллерах? У меня также есть базовый контроллер. Может быть, я должен разместить код там? Он будет использоваться достаточно часто, чтобы быть повторяющимся, но не каждый контроллер использует его.

В соответствии с документацией, повторяющийся код, который я хотел бы резюмировать, был бы похож на следующее:

Это мой код ниже

$this->load->library('email');

$this->email->from('your@example.com', 'Your Name');
$this->email->to('someone@example.com');
$this->email->cc('another@another-example.com');
$this->email->bcc('them@their-example.com');

$this->email->subject('Email Test');
$this->email->message('Testing the email class.');

$this->email->send();

Я буду использовать шаблоны электронной почты и передавать $data массив в шаблон.

0

Решение

Я бы предложил helper метод будет отлично работать для вас. Просто добавьте custom помощник в вашем autoload.php как это :

$autoload['helper'] = array('custom');

И добавить send_email() такой метод

function send_email()
{
$ci = & get_instance();
$ci->load->library('email');

$ci->email->from('your@example.com', 'Your Name');
$ci->email->to('someone@example.com');
$ci->email->cc('another@another-example.com');
$ci->email->bcc('them@their-example.com');

$ci->email->subject('Email Test');
$ci->email->message('Testing the email class.');

$ci->email->send();
}

Для большего : https://www.codeigniter.com/user_guide/general/helpers.html

1

Другие решения

Других решений пока нет …