PHP切换True / False常量值

时间:2015-05-29 18:31:28

标签: php boolean constants

有没有办法在PHP中切换定义的常量值true / false?我试图使true = false和false = true。

我已经尝试了几次尝试,但它似乎不允许我改变:

define("false",1);
define(false,1);
false = true;

最后一个导致PHP内部服务器错误,前两个只是什么都不做。

这些似乎都不起作用。是否在编译的PHP中更深层次定义了true / false,无法重置?

注意:这主要是出于教育目的,并了解如何定义这些值,因为它似乎是“不可触及的”。我并不是想写出亵渎神灵的代码来反过来检查事情。

2 个答案:

答案 0 :(得分:3)

你不能这样做,所以你只能写TRUE而你会得到FALSE。唯一可行的方法是使用constant(),如果你定义了两个常数,例如

define(FALSE, TRUE);
define(TRUE, FALSE);
var_dump(constant(TRUE));

输出:

bool(false)

答案 1 :(得分:0)

代码效果应该是可预测的,并且因为重新定义TRUE / FALSE将以数百万种方式破坏程序逻辑-我很高兴禁用了这些功能。否则,您最终将编写类似以下的意大利面条式代码:

if (
     (customer_bought($product_id) && !inverted(TRUE) && !inverted(FALSE)) ||
     (!customer_bought($product_id) && inverted(TRUE) && inverted(FALSE))
   ) {
  send_invoice($client_id);
}
else {
    if ((inverted(TRUE) && !inverted(FALSE)) ||
        (!inverted(TRUE) && inverted(FALSE))
        ) {
       throw new exception('Program is broken - contact developer for assistance');
    }
}