2011-11-23 50 views

回答

9

the documentation regarding strings

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

$const = PREFIX; 

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

謝謝!添加一點注意:'$ const/images/hello.png'也可以。 – moey

+0

本示例中不需要大括號。 – wlf

+0

你也可以使用'$ consts = get_defined_constants();'得到所有的定義,然後用'{$ consts ['PREFIX']}'進行訪問。 – PhoneixS

2
採取的定界符內使用

常量不解釋!

編者按:這是真的。 PHP無法識別來自heredoc塊中任何其他字符串的 常量。

Source

+0

看起來像是有一個例外,該規則:http://stackoverflow.com/a/12508992/367456 – hakre

5

,如果你有超過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

+0

我跟着你的建議嘗試,因爲我認爲這是有趣的,但它來到我的腦海,你的建議看起來未經測試,因爲它會帶來很多錯誤。 – hakre

+0

我改變了答案。 –

+0

這對我很好! –