Mat*_*hen 13
它们都是语言结构(T_ECHO和T_EXIT),但不同种类.您可以在没有括号的情况下使用exit,但如果传递值则不能.另一个怪癖是,如果你传递多个值,echo要求你不要使用括号:
php > echo 'foo', 'bar';
foobar
php > echo ('foo', 'bar');
PHP Parse error: syntax error, unexpected ',' in php shell code on line 1
Run Code Online (Sandbox Code Playgroud)
如果您现在正在考虑,"但这并不能解释为什么设计不一致",欢迎使用PHP.
仅仅是因为有人对其进行了编程,没有人愿意改变它.回声和退出不共享代码,因此它们不一定以相同的方式工作.这没有充分的理由.
以下是PHP解析器的一些代码.如您所见,echo和exit后跟不同的表达式.退出后面没有任何内容,()或括号之间的表达式.Echo之后只是一个表达式:
unticked_statement:
| T_ECHO echo_expr_list ';'
| T_EXIT exit_expr { ... }
...
exit_expr:
/* empty */ { ... }
| '(' ')' { ... }
| '(' expr ')' { ... }
;
echo_expr_list:
echo_expr_list ',' expr { ... }
| expr { ...; }
;
Run Code Online (Sandbox Code Playgroud)
PHP从C和(* nix)外壳中获得了很多启发。
该echo壳不需要()的。而exit()用C做(而return没有)。
在中C,return是语言构造(从函数调用返回),exit()而是执行程序终止的函数。
PHP作为一种解释语言,可以自由选择将其视为exit语言构造或带有函数()。这是一种语言构造,可以用作exit;或exit(x);
| 归档时间: |
|
| 查看次数: |
1555 次 |
| 最近记录: |