Сценарий: извлеките шаблон электронной почты из базы данных и просмотрите список получателей, персонализировав электронную почту для каждого.
Мой шаблон электронной почты возвращается как вложенный объект. Это может выглядеть примерно так:
object(stdClass) {
["title"] => "Event Notification"
["sender"] => "[email protected]"
["content"] => object(stdClass) {
["salutation"] => "Dear %%firstname%%,"
["body"] => "Lorem ipsum %%recipient_email%% etc etc..."
}
}
Затем я перебираю получателей, передавая этот объект $email функции personalise():
foreach( $recipients as $recipient ){
$email_body = personalise( $email, $recipient );
//send_email();
}
Проблема, конечно, в том, что мне нужно передать объект $email по ссылке, чтобы он заменил теги персонализации, но если я это сделаю, исходный объект изменится и больше не будет содержать теги персонализации.
Насколько я понимаю, клон мне здесь не поможет, потому что он создаст только поверхностную копию: объект содержимого внутри объекта электронной почты не будет клонирован.
Я читал об обходе этого с помощью unserialize(serialize($obj)) - но все, что я читал, говорит о том, что это большой удар по производительности.
Итак, два, наконец, добрались до моих двух вопросов:
- Является ли unserialize(serialize($obj)) разумным решением?
- Или я неправильно все это делаю? Есть ли другой способ создания персонализированных копий этого объекта электронной почты?