2

根据我对http://3v4l.org/ZCJWA以下示例的测试(对于 PHP 5.3.10 - 5.4.6):

<?php
namespace Foo;
define('Foo\\true', false);
define('Foo\\false', true);

var_dump(
    true,
    false,
    1 === 1,
    1 === 0
);

将返回:

bool(false)
bool(false)
bool(true)
bool(false)

为什么你可以truefalse而不用false覆盖true

4

1 回答 1

11

在您的 1st 之后definetrue现在定义为false,因此Foo\\false设置为 false

要使其按预期工作,您应该分别设置Foo\\trueFoo\\false全局空间值:truefalse

define('Foo\\true', \false);
define('Foo\\false', \true);
于 2012-11-30T13:14:25.097 回答