PHP 中的三元条件运算符长期以来一直是该语言的主要内容,它允许简洁的 if-then-else 语句。在 PHP 5.3 中,该运算符获得了新的形式,进一步简化了其用法。
之前,三元运算符采用以下形式:
<code class="php">expr ? val_if_true : val_if_false</code>
但是,在 PHP 5.3 中,中间的表达式可以省略,结果是:
<code class="php">expr ?: val_if_false</code>
这相当于:
<code class="php">expr ? expr : val_if_false</code>
考虑以下示例:
<code class="php">require __DIR__.'/c.php'; if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; })) throw new Exception('Error'); $c();</code>
此处,如果条件 @$_GET['c'] 计算结果为 false,则使用 ?: 运算符为 $c 变量分配默认值。如果 @$_GET['c'] 未设置或者是无效函数,$c 将被分配显示“Woah!”的匿名函数。
至于匿名函数,它们确实在 PHP 中存在了一段时间,但它们在 PHP 5.3 中获得了新的多功能性。匿名函数,也称为闭包,允许您内联定义函数而无需给它们命名。
在上面的示例中,匿名函数定义为:
<code class="php">function() { echo 'Woah!'; }</code>
它可以是像任何其他命名函数一样调用,在本例中使用 $c 变量。
以上是PHP 5.3 中的新增功能:压缩三元运算符和匿名函数?的详细内容。更多信息请关注PHP中文网其他相关文章!