Как вы используете define в heredoc? Например:
define('PREFIX', '/holiday');
$body = <<<EOD
<img src="PREFIX/images/hello.png" /> // This doesn't work.
EOD;
Как вы используете define в 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;
$const/images/hello.png
также будет работать.
- person moey; 23.11.2011
$consts = get_defined_constants();
, чтобы получить все определения, а затем получить доступ с помощью {$consts['PREFIX']}
.
- person PhoneixS; 11.12.2017
если у вас есть более 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.