【发布时间】:2014-01-03 08:31:27
【问题描述】:
作为学习 PHP 的一部分,我试图将其语义形式化。简化此任务的一个好方法是尽可能多地理解其语法,作为更基本表达式的“语法糖”。这样一来,我定义语义的句法形式就更少了。
PHP 似乎有大量可以去糖的语法。一些例子:
if/endif和其他“替代语法”脱糖为if { ... }等。for (expr1; expr2; expr3) { statements; }脱糖到expr1; while (expr2) { statements; expr3; }。我认为以下是正确的:
$foo仅表示${'foo'}。也就是说,按名称引用变量只是通过将表达式评估为字符串来进行更一般的变量查找的一个实例。-
我认为是这样的:
<p>foo</p> <?php echo 5; ?> <p>bar</p>对此感到厌烦:
echo "<p>foo</p>\n"; echo 5; echo "<p>bar</p>\n";或者一般来说,
?>blah<?php仅表示echo 'blah';。
当然还有很多很多类似的案例。 我想提供一份全面且确认准确的清单。 (我的任何例子都可能不准确,所以请纠正我!)
【问题讨论】:
-
我通常写
<?= 5 ?>而不是<?php echo 5; ?> -
你真的觉得
for是语法糖吗? :) -
@jameshfisher 请参阅:stackoverflow.com/help/dont-ask,这很可能是您被否决的原因。
-
@jameshfisher 恐怕这个问题太宽泛了;一个好的答案必须对 every PHP 结构进行脱糖,您也没有说明您认为哪些语句是无糖的。
-
@jameshfisher 仍然太宽泛;根据定义,列表答案太长了。此外,你永远无法得到一个完整的列表,因为每个 PHP 版本都会带来越来越多的糖。
标签: php syntactic-sugar