定义和heredoc

时间:2011-11-23 13:24:45

标签: php heredoc

如何在define内使用heredoc?例如:

define('PREFIX', '/holiday');

$body = <<<EOD
<img src="PREFIX/images/hello.png" />   // This doesn't work.
EOD;

3 个答案:

答案 0 :(得分:10)

取自the documentation regarding strings

DEFINE('PREFIX','/holiday');

$const = PREFIX;

echo <<<EOD
<img src="{$const}/images/hello.png" /> 
EOD;

答案 1 :(得分:6)

如果你有超过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;

http://codepad.org/lA8L2wQR

答案 2 :(得分:2)

  

不解释heredoc语法中使用的常量!

     

编者注:这是事实。 PHP无法识别   来自heredoc块中任何其他字符串的常量。

Source