这是PHP中记录的退出和死亡的特殊处理吗?
我刚刚在
PHP文档中阅读了
Expressions页面,并在顶部说:
这个简单的定义包括所有函数和大多数语言结构,但有一些语言结构明确声明它们不返回值. 以下是返回值的语言结构列表: > empty 以下是有趣的少数几个不返回值,因此不是表达式: > die 我发现die和exit特别感兴趣,因为它们可以在PHP中用作表达式,尽管没有返回值.以下代码行都会抛出语法错误,如预期的那样: echo 'Hi' or echo 'Bye'; if(echo('foo')) return return(1); $foo['bar'] = isset($foo['bar']) ? unset($foo['bar']) : 0; if(unset($foo['bar'])) __halt_compiler() or die; 但是,以下PHP代码完全没有语法错误: print 'Hi' or print 'Bye'; // Makes sense,print returns a value if(!die() and exit) // Wait what's happening here? quit(die(exit(quit()))); // die and exit don't have return values (does quit?) $x = true ? die/2 : 5*exit(); $y = pow(die,7); isset($_GET['bar']) or die(); // This one is actually pretty commonly used. function quit(){ return exit; } 我查看了PHP文档,但没有找到任何提及die()和exit()的特殊处理方法.任何PHP专家都知道这是否记录在任何地方.这是预期的行为,是isset($_ GET [‘bar’])或die();模式安全使用;它会在未来的PHP版本中突然中断吗?
die和exit(它们共享T_EXIT标记)在解析阶段属于
expr_without_variable 规则,这就是为什么PHP很乐意将它们放在表达式上下文中而不会出现语法错误.
PHP手册中没有特殊处理的描述,但退出手册页上的first example显示它被用作…或退出.
是.是.一切皆有可能,但不太可能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |