我不明白为什么这段代码的执行方式不是我想要的。
define('TEST', 123); echo TEST; echo "\n"; var_dump( defined(TEST) );
打印:
123 bool(false)
vuktfyat1#
简短的回答是;加引号因为你没有引用名为TEST的常量-你引用的是TEST包含的任何内容。结束后,这就是你正在做的事情(代码是正确的-没有123常量):
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
mdfafbf12#
可能是因为defined()需要一个字符串作为参数。
var_dump( defined('TEST') );
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') );
3条答案
按热度按时间vuktfyat1#
简短的回答是;加引号
因为你没有引用名为
TEST
的常量-你引用的是TEST
包含的任何内容。结束后,这就是你正在做的事情(代码是正确的-没有
123
常量):请改为引用常量名称(用引号括起来):
如果我的常量在命名空间中怎么办?
如果常数是在命名空间中定义的,则必须在常数名称中包含该常数。
mdfafbf12#
可能是因为defined()需要一个字符串作为参数。
5w9g7ksd3#
用have call it wrong