正如之前所说,您不想学习速记,并且接受的答案给出了省略 花括号
的很好的示例,但还有一些需要补充的地方。正如您所看到的,在 if ($x) echo 'foo';
的情况下省略 花括号
是可以的。代码没有任何问题,没有性能或其他问题,并且其他开发人员也可以阅读。示例还向您展示,如果您编写
if ($x)
echo 'foo';
echo 'bar';
代替
if ($x)
echo 'foo';
echo 'bar';
如果你不想打印bar
,但是出现了不需要的结果,那么如果你的代码充满这样的语句,会使你自己难以阅读代码,其他人更难阅读。
我不想学习速记,我只想理解可以在什么条件下和何处可以省略花括号。
这些问题密切相关,因此如果您真的想要理解在哪里可以省略花括号,那么必须了解或至少知道速记的相关知识,请阅读以下两篇文章:
- PHP控制结构
- PHP三元运算符和表达式
所以我的大问题是:在哪些结构/循环/函数中可以省略花括号?
花括号不是必需的,然而为了可读性和维护性,许多开发人员认为不包含它们是不好的风格。前面提到的2个链接应该为您提供了必要的信息,使您能够自行决定何时可以省略花括号。
例如,以下代码片段都完全相同且合法:
使用花括号
if (PHP_VERSION_ID < 70000)
{
print "PHP >= 7.0 required yours is ";
print phpversion();
print "\n";
exit(1);
}
与...相同
if (PHP_VERSION_ID < 70000) :
print "PHP >= 7.0 required yours is ";
print phpversion();
print "\n";
exit(1);
endif;
或者您可以使用点运算符
if (PHP_VERSION_ID < 80000)
(print "PHP >= 7.0 required yours is ") . (print phpversion()) . (print "\n") . exit(1)
你可以利用三目运算符,甚至可以省略掉if
关键字和花括号
(PHP_VERSION_ID > 70000) ?: (print "PHP >= 7.0 required yours is ") . (print phpversion()) . (print "\n") . exit(1)
由于我们只打印,因此可以缩短代码并剥离一些print字符串函数
,这些函数在语句中没有花括号表示多个函数。
(PHP_VERSION_ID > 70000) ?: (print "PHP >= 7.0 required yours is " . phpversion() . "\n") . exit(1);
从php 7开始我们可以使用Null合并运算符
(PHP_VERSION_ID > 70000) ?: null ?? (print "PHP >= 7.0 required yours is ".phpversion() . "\n") . exit(1);
可以看到,有很多方法可以得到完全相同的结果。这不仅适用于这个if
示例,还适用于结构/循环/函数
。因此,对于您的重要问题并没有一个明确的答案。主要需要考虑以下几点:
- 编写的代码是否易于维护。
- 省略花括号会带来什么好处,您自己能回答吗?
struct
和class
的声明除外。 - Eric