PHP常量可以被引用,但defined()函数返回false。

6

有人遇到过这个问题吗?

var_dump(CRYPT_SHA256 == 1); // returns bool(true)
var_dump(defined(CRYPT_SHA256)); // returns bool(false)
2个回答

18

添加引号

defined('CRYPT_SHA256')

否则,您是在询问CRYPT_SHA256常量的是否也是另一个常量的名称...
defined(CRYPT_SHA256) === defined('1');

编辑:添加命名空间

如果您的常量在命名空间中定义,您必须在常量名称中包含它。

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

这在原问题中并非如此,但它也可能是同样问题的原因。


谢谢 - 在我的额头上做L形手势 - Dave B
3
你不是孤单的,戴夫。嘿嘿,现在我看到这个答案,我恍然大悟,这并不是我第一次犯这个错误!;) - BruceHill

0

第一条语句对我也返回了false。

我稍微修改了一下,如下所示

define('CRYPT_SHA256',1);
  //var_dump(CRYPT_SHA256 == 1); // returns bool(true)
  var_dump('CRYPT_SHA256');
var_dump(defined('CRYPT_SHA256')); // returns bool(false)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接