Как вы используете определение в heredoc ? Например:
define('PREFIX', '/holiday'); $body = <<<EOD <img src="PREFIX/images/hello.png" /> // This doesn't work. EOD;
взятые из документации по строкам
DEFINE('PREFIX','/holiday'); $const = PREFIX; echo <<<EOD <img src="{$const}/images/hello.png" /> EOD;
если у вас более 1 константы, использование переменной будет затруднительным. поэтому попробуйте этот метод
define('PREFIX', '/holiday'); define('SUFFIX', '/work'); define('BLABLA', '/lorem'); define('ETC', '/ipsum'); $cname = 'constant'; // if you want to use a function in heredoc, you must save function name in variable $body = <<<EOD <img src="{$cname('PREFIX')}/images/hello.png" /> <img src="{$cname('SUFFIX')}/images/hello.png" /> <img src="{$cname('BLABLA')}/images/hello.png" /> <img src="{$cname('ETC')}/images/hello.png" /> EOD;
Константы, используемые в синтаксисе heredoc, не интерпретируются!
Примечание редактора: Это верно. PHP не имеет возможности распознавать константу из любой другой строки символов в блоке heredoc.
Источник