以下代码是否执行相同的操作,如果是,编码时哪个更好?当PHP代码缺少大括号时,是否有一个名称?
PHP代码。
<?php if (isset($_POST['email'])) { echo $_POST['email']; }?>
<?php if (isset($_POST['email'])) echo $_POST['email'];?>
答案 0 :(得分:6)
我个人总是写下可以使用花括号和花括号的语句。例如,取代码:
if (UserIsLoggedIn())
ShowCreditCardDetails();
现在,如果有一些业余编码员出现,并希望在用户登录时也做其他事情:
if (UserIsLoggedIn())
WriteAuditLog();
ShowCreditCardDetails();
现在,将为未登录的用户运行ShowCreditCardDetails()
,因为当没有花括号时,只有if
之后的第一个语句被执行。如果那样:
if (UserIsLoggedIn())
{
ShowCreditCardDetails();
}
这不会发生,因为花括号包含了要执行的整个代码块。
我不相信这有一个名字,它只是写一个if
语句的缩写方式。注意我也将花括号放在代码块和原始语句之外的它们自己的行上 - 它只是有助于提高可读性。
答案 1 :(得分:2)
在这种情况下,可以使用第二个版本。您可以省略括号的原因是,如果控制语句的主体只包含一个语句,则不需要括号:
if (isset($_POST['email']))
echo $_POST['email'];
但是,如果您扩展脚本并忘记了这一点,当然这会导致问题:
if (isset($_POST['email']))
echo $_POST['email'];
echo $_POST['foo'];
此处,echo $_POST['foo'];
<?php if (isset($_POST['email'])) echo $_POST['email']; echo $_POST['foo'];?>
在这两种情况下,无论echo $_POST['foo'];
子句如何,if
都将被执行。
但是如果你在一个模板中使用它并且只想设置它就打印一个字段,那么你不可能扩展这段短代码。所以在这种情况下,“短”版本应该没问题。
<强>更新强>:
输出未转义的用户输入可能非常危险。 从不信任用户输入。
答案 2 :(得分:1)
如果你不使用大括号它会做同样的事情,但它会在第一个;
之后停止,之后的代码不再在if语句中(在你的例子中它没有关系,因为你有只有一个;在那里)。就个人而言,我讨厌这种捷径。
答案 3 :(得分:0)
如果块语句计数只有一个。你不需要花括号。
但是,如果你也把单个语句的花括号。代码将采用可读格式。其他人可以轻松理解。
<?php
if (isset($_POST['email']))
{
echo $_POST['email'];
}
?>
现在代码将包含缩进。
答案 4 :(得分:-2)
没有“更好的编码”这样的东西。这是一个协议问题。选择您喜欢的coding standard
并按照其指南进行操作。
http://pear.php.net/manual/en/standards.php
http://framework.zend.com/manual/en/coding-standard.html
是示例,您可以google php coding standard
了解更多