2011-11-23 13 views

Odpowiedz

9

zaczerpnięte z the documentation regarding strings

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

$const = PREFIX; 

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

Dzięki! Dodanie małej uwagi: '$ const/images/hello.png' również będzie działać. – moey

+0

nawiasy klamrowe nie są wymagane w tym przykładzie. – wlf

+0

Możesz także użyć '$ consts = get_defined_constants();', aby uzyskać wszystkie definicje, a następnie uzyskać dostęp za pomocą '{$ consts ['PREFIX']}'. – PhoneixS

2

stałych używanych w składni heredoc nie są interpretowane!

Uwaga edytora: To prawda. PHP nie ma możliwości rozpoznania stałej z żadnego innego ciągu znaków w bloku heredoc.

Source

+0

Wygląda na to, że istnieje wyjątek od tej reguły: http://stackoverflow.com/a/12508992/367456 – hakre

5

jeśli masz więcej niż 1 stała, zmienna wykorzystanie byłoby trudne. więc spróbować tej metody

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

Podążyłem za twoją sugestią, aby spróbować, ponieważ uważam, że jest to interesujące, jednak przyszło mi do głowy, że Twoja sugestia wygląda niesprawdzony, ponieważ daje wiele błędów. – hakre

+0

Zmieniłem odpowiedź. –

+0

To działa dobrze dla mnie! –