PHP defined()为什么它返回false,即使常量已定义?

yv5phkfx  于 2023-05-16  发布在  PHP
关注(0)|答案(3)|浏览(98)

我不明白为什么这段代码的执行方式不是我想要的。

define('TEST', 123);
echo TEST;
echo "\n";
var_dump( defined(TEST) );

打印:

123
bool(false)
vuktfyat

vuktfyat1#

简短的回答是;加引号
因为你没有引用名为TEST的常量-你引用的是TEST包含的任何内容。
结束后,这就是你正在做的事情(代码是正确的-没有123常量):

define('TEST', 123);

var_dump( defined(TEST) ); // turns into the below statement
var_dump( defined(123) ); // false - no 123 constant

请改为引用常量名称(用引号括起来):

define('TEST', 123);

var_dump( defined('TEST') ); // true, the TEST constant is indeed defined
//                ^    ^ Quotation marks are important!

如果我的常量在命名空间中怎么办?

如果常数是在命名空间中定义的,则必须在常数名称中包含该常数。

namespace Some\Namespace;

const MY_CONST = 'value';

var_dump( defined('MY_CONST') ); // false unless another constant has been defined
var_dump( defined('Some\Namespace\MY_CONST'); // true
mdfafbf1

mdfafbf12#

可能是因为defined()需要一个字符串作为参数。

var_dump( defined('TEST') );
5w9g7ksd

5w9g7ksd3#

用have call it wrong

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') );

相关问题