Я пишу почтовый класс, который извлекает содержимое, хранящееся в базе данных, и загружает его в шаблон перед отправкой в виде электронного письма в формате HTML. Однако, поскольку каждое электронное письмо содержит переменные PHP и динамическое содержимое, я решил использовать разделители. Так что вместо контента, выглядящего так:
Hello $username, welcome to the site.
Это будет выглядеть так:
Hello {{username}}, welcome to the site.
Пока я использую эти методы:
function load($name,$content)
{
// preps the template for HTML
}
function content($template_id)
{
$template = $this->db->get_where('email_templates',array('id'=>$template_id));
return $template->content;
}
function new_email($email,$name,$user_type)
{
$msg = $this->load($name,$this->content(1));
$this->send($email,'Thanks for your application',$msg,1);
}
Проблема, с которой я столкнулся, заключается в том, как преобразовать {{variable}} в переменную $, чтобы она анализировалась - я не хочу, чтобы ее просто загружали как $ username в шаблон электронной почты. Это просто случай использования регулярных выражений и экранирования строки для ее анализа? Что-то вроде:
$content = str_replace("{{","'.$",$template->content);
$content = str_replace("}}",".'",$template->content);
Или это недостатки? Кто-нибудь знает, что лучше всего делать?