我最近遇到了http://php.net/manual/en/control-structures.alternative-syntax.php中描述的switch语句语法错误.
我的IDE(phpstorm)检测到错误,但它没有提供任何有用的纠正上下文.将文件作为模板包含时,代码肯定会产生致命错误.
手册页的警告:
警告 switch语句和第一种情况之间的任何输出(包括空格)都将导致语法错误.例如,这是无效的:
<?php switch ($foo): ?>
<?php case 1: ?>
...
<?php endswitch ?>
Run Code Online (Sandbox Code Playgroud)
虽然这是有效的,因为switch语句之后的尾随换行符被视为结束的一部分?>因此在开关和case之间没有输出任何内容:
<?php switch ($foo): ?>
<?php case 1: ?>
...
<?php endswitch ?>
Run Code Online (Sandbox Code Playgroud)
手册页没有提供任何解释.页面上的一些用户评论也没有解释任何内容; 他们只是重申不允许有空格.
为什么这是语法错误?
eli*_*ide 12
它就是.
这是一个语法错误,原因与此相同:
<?php
$foo = 1;
switch ($foo) {
?>
This can't be here.
<?php
case 1:
echo "I'm one";
break;
case 2:
echo "I'm two";
break;
}
Run Code Online (Sandbox Code Playgroud)
这导致:
[2016年1月27日22:21:08欧洲/柏林] PHP解析错误:语法错误,意外'这不能在这里.',期待案例(T_CASE)或默认(T_DEFAULT)或'}'在/ path /文件在第7行
唯一可以遵循的switch是a case.这就是语言的运作方式.
与替代语法的具体空格限制是它的原因之一是在替代语法:它会导致难看的格式和压痕缺乏通常一个人会看到它.
| 归档时间: |
|
| 查看次数: |
2052 次 |
| 最近记录: |