Рассылаю письмо с помощью mail();. Там довольно объемный текст. В тексте есть пара переменных. Вот упрощенная схема моих действий: текст письма лежит в файле text.inc.php: Код (Text): $message_text = <<<EOD Здравствуйте, $name. EOD; Сам скрипт такой: Код (Text): $name = 'name'; require_once 'text.inc.php'; mail( $email_to, $message_subj, $message_text, $headers ); Письмо уходит, текст ок, а на месте переменной пустота. Что я делаю не так? Я предполагал, что require как бы "вклеит" этот код в файл - в то место, где стоит require. Все равно что в этом месте я бы в явном виде поставил содержимое файла. Так я получу переменную $message_text с хранящимся в ней текстом. При этом переменная $name, которая в $message_text у меня выше определена, значит ее значение должно подставиться без проблем. Однако, нет. Нужны подсказки) Спасибо! Спасибо
Нет. Может я чего не понимаю, но вот тут https://php.net/manual/ru/language.variables.scope.php пишут, что "единая область видимости охватывает также включаемые (include) и требуемые (require) файлы. Например: " Код (Text): <?php $a = 1; include 'b.inc'; ?> "Здесь переменная $a будет доступна внутри включенного скрипта b.inc." // конец цитаты Т.е. моя $name должна быть видна во включаемом файле и без global. Или как?
А что за версия php? Например в php 5.6.4 всё работает Код (PHP): 0.inc.php: <?php $message_text = <<<EOD Здравствуйте, $name. EOD; ?> <?php $name = 'test'; require_once '0.inc.php'; echo $message_text; ?> результат: Здравствуйте, test.
5.3.3 Ну, раз у вас работает, может у меня просто глаз замылился и я какой-нибудь очевидной проблемы не вижу. Посмотрю завтра на свежую голову. Спасибо!
зачем меня сейчас в документашку окунули? что там писано я лет 5 назад последний раз смотрел. был задан прямой вопрос - была ли попытка насильно запихнуть-притянуть переменную через глобальную область видимости? и да, если провести дебаг наверное будет более понятно что происходит, чтоб нам тут не гадать.
Не сердитесь. Просто в наше время непонятно, вопрос это, или рекомендация в форме вопроса. А вообще хочу сказать спасибо вам и denis01: действительно, проблема была в другом месте. Исправил ошибку, все заработало. Но если б не получил подтверждение, что "должно работать", так бы и стучался в открытую дверь. В общем, проблема решена. Всем больше спасибо.