Come si utilizza define all'interno di heredoc? Per esempio:define e heredoc
define('PREFIX', '/holiday');
$body = <<<EOD
<img src="PREFIX/images/hello.png" /> // This doesn't work.
EOD;
Come si utilizza define all'interno di heredoc? Per esempio:define e heredoc
define('PREFIX', '/holiday');
$body = <<<EOD
<img src="PREFIX/images/hello.png" /> // This doesn't work.
EOD;
tratto da the documentation regarding strings
DEFINE('PREFIX','/holiday');
$const = PREFIX;
echo <<<EOD
<img src="{$const}/images/hello.png" />
EOD;
Costanti utilizzate all'interno della sintassi heredoc non vengono interpretati!
Nota del redattore: questo è vero. PHP non ha modo di riconoscere la costante da qualsiasi altra stringa di caratteri all'interno del blocco heredoc.
Sembra che ci sia un'eccezione a questa regola: http://stackoverflow.com/a/12508992/367456 – hakre
se si dispone di più di 1 costante, l'utilizzo della variabile sarebbe difficile. in modo da provare questo metodo
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;
Ho seguito il tuo suggerimento per provarlo perché ho pensato che fosse interessante, tuttavia mi è venuto in mente che il tuo suggerimento sembra non testato, perché dà molti errori. – hakre
Ho cambiato la risposta. –
Funziona bene per me! –
Grazie! Aggiungendo una piccola nota: '$ const/images/hello.png' funzionerà anche. – moey
parentesi graffe non sono richieste in questo esempio. – wlf
Puoi anche usare '$ consts = get_defined_constants();' per ottenere tutti i define e quindi accedere con '{$ consts ['PREFIX']}'. – PhoneixS