这是PHP中记录的退出和死亡的特殊处理吗?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了这是PHP中记录的退出和死亡的特殊处理吗?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚在 PHP文档中阅读了 Expressions页面,并在顶部说:

这个简单的定义包括所有函数和大多数语言结构,但有一些语言结构明确声明它们不返回值.

以下是返回值的语言结构列表:

> empty
> eval
> include
> include_once
> isset
> list
> require
> require_once
> print

以下是有趣的少数几个不返回值,因此不是表达式:

> die
> echo
> exit
> return
> unset
> __halt_compiler

我发现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显示它被用作…或退出.

是.是.一切皆有可能,但不太可能.

脚本宝典总结

以上是脚本宝典为你收集整理的这是PHP中记录的退出和死亡的特殊处理吗?全部内容,希望文章能够帮你解决这是PHP中记录的退出和死亡的特殊处理吗?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。