Я не могу понять, почему этот код выполнен не так, как я хочу. PHP defined() почему он возвращает false, даже если определена константа?
define('TEST', 123);
echo TEST;
echo "\n";
var_dump(defined(TEST));
печати:
123
bool(false)
Я не могу понять, почему этот код выполнен не так, как я хочу. PHP defined() почему он возвращает false, даже если определена константа?
define('TEST', 123);
echo TEST;
echo "\n";
var_dump(defined(TEST));
печати:
123
bool(false)
Потому что вы не ссылаясь на константу с именем TEST
- Вы имеете в виду то, что TEST
содержит.
обернутый вне, это то, что вы делаете (код прав - нет 123
постоянная):
var_dump(defined(123));
Обратитесь к постоянному имени вместо (заключить его в кавычки):
var_dump(defined('TEST'));
Возможно, потому что defined() требует строки в качестве параметра.
var_dump(defined('TEST'));
Не совсем верно. Если вы попробуете 'defined (TEST)' и константа * не определена *, вы получите 'E_NOTICE', но он преобразует ее в строку' TEST', поэтому, если она * не определена * это то же самое, что сказать 'defined ('TEST')'. – h2ooooooo
@ h2ooooooo [Согласно php docs] (http://php.net/manual/en/function.defined.php) «bool defined (string $ name)» и «Возвращает TRUE, если именованная константа, заданная по имени, были определены, ЛОЖЬ в противном случае. " – Kevin
использование имеют называть неправильно
define('TEST', 123);
echo TEST;
echo "\n";
var_dump(defined(TEST));//provide The constant name you are providing 123 so it not defined
//correct call would be
var_dump(defined('TEST'));
@downvoters, ум объяснить? Это хороший вопрос, ясно, что задают, он сам что-то пробовал и поделился своим кодом. Он также излагает свои ожидания и каков результат на самом деле. – Kevin