Codeigniter使使用库或帮助程序发送电子邮件的方式为DRY吗?

时间:2018-07-21 12:17:00

标签: php codeigniter email codeigniter-3 codeigniter-email

我想让我在什么时候使用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数组传递给模板。

1 个答案:

答案 0 :(得分:1)

我建议使用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