作为学习PHP的一部分,我试图正式化它的语义。简化这项任务的一个好方法就是尽可能多地理解它的语法,就像更多基本表达式的“语法糖”一样。这样,我就可以用更少的语法形式来定义它的语义。Desugaring PHP语法
PHP似乎有大量的可以去糖的语法。一些例子:
if/endif
等 “替代语法” desugar到if { ... }
等for (expr1; expr2; expr3) { statements; }
desugars到expr1; while (expr2) { statements; expr3; }
。我认为以下是真的:
$foo
只是意味着${'foo'}
。也就是说,通过名称来引用一个变量只是通过对一个字符串的表达式进行求值而成为更一般变量查找的一个实例。我想这:
<p>foo</p> <?php echo 5; ?> <p>bar</p>
desugars这样:
echo "<p>foo</p>\n"; echo 5; echo "<p>bar</p>\n";
或一般,
?>blah<?php
只是意味着echo 'blah';
。
确实有很多许多其他这种情况。 我想列出一份综合清单,并确认其准确无误。 (而且我的任何例子都可能不准确,所以请纠正我!)
我通常写'= 5 ?>'而不是'<?php echo 5; ?>' – saada
你真的觉得'for'是语法糖吗? :) –
* * blah *示例完全不正确。 '?> blah <?php'不包含可执行的PHP部分。您将PHP完全从图片中取出,只需将* blah *发送到正在使用的输出管道/缓冲区等。 – Phil