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)

なぜ上書きできるtrueのに上書きできfalseないfalsetrueですか?

4

1 に答える 1

11

あなたの最初の の後definetrueは であると定義されているfalseので、Foo\\falseに設定され falseます。

期待どおりに動作させるには、および をそれぞれFoo\\trueおよびFoo\\falseグローバル空間値に設定する必要があります。truefalse

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