- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
function generateMessage($template, $tokens){
foreach($tokens as $key => $value){
$search[] = $key;
$replace[] = $value;
}
return str_replace($search, $replace, $template);
}
$template = "Здравствуйте, %contact%! К нам поступил запрос на восстановление пароля на сайте...";
$token['%contact%'] = 'Иван';
generateMessage($template, $token);
вместо:
sprintf("Здравствуйте, %s! К нам поступил запрос на восстановление пароля на сайте...", 'Иван');
В данном конкретном примере и sprintf не нужен. Двойные кавычки в PHP автоматически интерпретируют переменные, поэтому прошёл бы и такой код:
Чем generateMessage хуже стандартного sprintf? В данном примере разницы не видно, но ведь с помощью generateMessage можно реализовать более сложные шаблоны, чем с помощью sprintf. Например, использовать переменную несколько раз или переставлять слова местами. Если я ничего не путаю, то sprintf всего лишь тупо парсит слева направо, подставляя макросы в порядке их упоминания в списке аргументов.
эта строка лежит в файле с переводами, $contact в нём не доступен
Реквестирую говноконкурс, принимайте эстафету.