¿Cómo se usa define dentro de un heredoc? Por ejemplo:define y heredoc
define('PREFIX', '/holiday');
$body = <<<EOD
<img src="PREFIX/images/hello.png" /> // This doesn't work.
EOD;
¿Cómo se usa define dentro de un heredoc? Por ejemplo:define y heredoc
define('PREFIX', '/holiday');
$body = <<<EOD
<img src="PREFIX/images/hello.png" /> // This doesn't work.
EOD;
tomado de the documentation regarding strings
DEFINE('PREFIX','/holiday');
$const = PREFIX;
echo <<<EOD
<img src="{$const}/images/hello.png" />
EOD;
constantes utilizadas dentro de la sintaxis heredoc no se interpretan!
Nota del editor: Esto es cierto. PHP no tiene forma de reconocer la constante desde cualquier otra cadena de caracteres dentro del bloque heredoc.
Parece que hay una excepción a esa regla: http://stackoverflow.com/a/12508992/367456 – hakre
si tiene más de 1 constante, el uso variable sería difícil. a fin de tratar este método
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;
Seguí tu sugerencia para probar eso porque pensé que era interesante, sin embargo, me vino a la mente que tu sugerencia parece no probado, porque da muchos errores. – hakre
he cambiado la respuesta. –
¡Esto funciona bien para mí! –
Gracias! Agregar una pequeña nota: '$ const/images/hello.png' también funcionará. – moey
no se requieren corchetes en este ejemplo. – wlf
También puede usar '$ consts = get_defined_constants();' para obtener todas las definiciones y luego acceder con '{$ consts ['PREFIX']}'. – PhoneixS