我正在读一本关于PHP以及关于使用TRUE和FALSE的书,它说:
事实上,小写版本更稳定,因为PHP不允许您重新定义它们;大写版本可以重新定义。
我试图重新定义TRUE和FALSE,但没有成功!!我在谷歌上重新定义常量,发现我需要使用runkit_constant_redefine(),我没有安装runkit扩展,所以我不能在TRUE和FALSE上尝试。
我的问题是,TRUE、true、FALSE或false是否可以用runkit_constant_redefine()重新定义?
发布于 2014-10-23 16:56:35
布尔值真被定义为不区分大小写的常量,true是默认的表示法.
define("true", 1, 1);这意味着它也适用于任何其他套管,无论是TRUE、True还是TrUe或tRUE。
你的书中提到的是在另一种情况下重新定义常量。你能做到的。除了小写的true之外,所有这些都是常量查找表中的打开点。
例如,对于define("True", 2),它将优先于小写定义的true,后者将替代其他情况。
不管怎么说,这是你书中的毫无意义的建议。即使您可以为布尔常量声明十几个变体,但实际上没有人这样做。假定的“更稳定”的推理实际上是假的。更喜欢更具可读性的符号或与现有编码风格相匹配的符号。
发布于 2016-05-05 13:27:28
您可以在每个名称空间中定义不同的true和false。
namespace foo;
define('foo\true', 0);
if (true) {
echo 'This will be never printed.';
}发布于 2014-10-23 16:44:48
是的,你可以,对于大写版本:
$ php
php > var_dump(defined('TRUE'), TRUE);
bool(true)
bool(true)
php > define('TRUE', 'arglebargle');
php > var_dump(defined('TRUE'), TRUE);
bool(true)
string(11) "arglebargle"
php > echo phpversion();
5.4.16小写,不多:
php > var_dump(defined('true'), true);
bool(true)
bool(true)
php > define('true', 'foobarbaz');
PHP Notice: Constant true already defined in php shell code on line 1但你为什么要这么做?重新定义现实很难最终实现。
https://stackoverflow.com/questions/26532998
复制相似问题