如何正确格式化PHP'IF ELSE'语句?

pri*_*ace 7 php if-statement readability code-formatting semantics

这是一个长期存在的问题,我在许多热门和热情的编码会话中遇到过.

一个人用这种方式编码另一种代码.所以经过多次推拉后我很好奇...有没有正确的方法来表达PHP'IF ELSE'语句?

我个人用的是:

if ($variable == 'setvalue')
{
    $variable = executefunctiononvariable($variable);
} else {
    $variable = executedifferentfunctiononvariable($variable);
}
Run Code Online (Sandbox Code Playgroud)

虽然我已经提出了许多论据,但我已经提出了其他选择,例如:

if ($variable == 'setvalue')
{
    $variable = executefunctiononvariable($variable);
}
else
{
    $variable = executedifferentfunctiononvariable($variable);
}
Run Code Online (Sandbox Code Playgroud)

要么

if ($variable == 'setvalue')
    $variable = executefunctiononvariable($variable);
else
    $variable = executedifferentfunctiononvariable($variable);
Run Code Online (Sandbox Code Playgroud)

要么

if ($variable == 'setvalue') {
    $variable = executefunctiononvariable($variable);
} else {
    $variable = executedifferentfunctiononvariable($variable);
}
Run Code Online (Sandbox Code Playgroud)

Dar*_*ein 22

我个人格式化我的if/else就像最后一个:

if ($variable == 'setvalue') {
    $variable = executefunctiononvariable($variable);
} else {
    $variable = executedifferentfunctiononvariable($variable);
}
Run Code Online (Sandbox Code Playgroud)

在我看来,你的版本是1和3的混合物.

我也和那些完成所有这些工作的编码员一起工作,从未听说过标准版.

php网站使用最后一个:http://ca2.php.net/manual/en/control-structures.elseif.php

在if语句总是非常短的某些情况下,我也使用第二个例子.如果它有可能变得越来越长(每行超过1行),我会做#1.我尽量避免使用#2,因为稍后很难添加{}.


Pao*_*ino 8

我用最后一个:

if ($variable == 'setvalue') {
    $variable = executefunctiononvariable($variable);
} else {
    $variable = executedifferentfunctiononvariable($variable);
}    
Run Code Online (Sandbox Code Playgroud)

话虽这么说,你选择哪一个是非常不重要的,只要确保你是一致的.


Ste*_*lay 7

正确的方法是遵循您的项目的编码标准.如果你没有,请使用PHP-FIG,Zend,Symfony等.

此表单非常受欢迎:

if (condition) {
    statements
} else {
    statements
}
Run Code Online (Sandbox Code Playgroud)

对于变量赋值,只有当语句可以清晰地放在一行上时,我才会使用三元组:

$variable = !empty($foo) ? $foo : 'default';
Run Code Online (Sandbox Code Playgroud)

更新:我已经删除了关于多行三元语句的一点,因为我不再认为这是明智的做法.