Включить константу в строку без объединения - PullRequest
149 голосов
/ 05 февраля 2010

Есть ли в PHP способ включить константу в строку без объединения?

define('MY_CONSTANT', 42);

echo "This is my constant: MY_CONSTANT";

Ответы [ 12 ]

0 голосов
/ 30 июля 2013

Интересно, что вы можете использовать ключевое слово «const» в качестве имени для своей функции, чтобы предотвратить засорение пространства имен:

define("FOO","foo");
${'const'} = function($a){return $a;};
echo "{$const(FOO)}"; // Prints "foo"
echo const(FOO); // Parse error: syntax error, unexpected T_CONST

Вы также можете использовать $ GLOBALS для распространения функции const по всему коду:

$GLOBALS['const'] = function($a){return $a;};

Не уверен, что это безопасно для будущего использования. И что еще хуже - все еще выглядит ужасно.

0 голосов
/ 31 мая 2013

Я полагаю, что это отвечает на оригинальный вопрос ОП. Единственное, глобальный индексный ключ работает только в нижнем регистре.

define('DB_USER','root');
echo "DB_USER=$GLOBALS[db_user]";

Выход:

DB_USER=root
...