php函数中的if-else
我有一个php类中的方法,它返回布尔响应,我使用的代码是php函数中的if-else,php,Php,我有一个php类中的方法,它返回布尔响应,我使用的代码是 public function checkIfExist($table ,$key, $value) { $sth = $this->dbh->prepare("SELECT COUNT(*) FROM $table WHERE $key = :value"); $sth->bindParam(':value', $value); $sth->execute(); if($sth-&
public function checkIfExist($table ,$key, $value)
{
$sth = $this->dbh->prepare("SELECT COUNT(*) FROM $table WHERE $key = :value");
$sth->bindParam(':value', $value);
$sth->execute();
if($sth->fetchColumn() >= 1)
{
return true;
}
return false;
}
上面的方法在不包含else条件的情况下对我有效,从逻辑上讲它应该有效,因为一旦函数得到true as boolean响应,它将退出该方法。但这是正确的方法还是应该包括其他条件?这是很好的编码
您不需要其他
这是因为如果if语句中的任何内容为true-->则返回,如果它不是true-->则返回
因此,该函数的实现是正确的 最好像这样返回:
return ($sth->fetchColumn() >= 1);
而不是if和else,这很好,因为正如您所说的,该方法已经返回了。由于您的条件已返回布尔值,您还可以编写
public function checkIfExist($table ,$key, $value)
{
$sth = $this->dbh->prepare("SELECT COUNT(*) FROM $table WHERE $key = :value");
$sth->bindParam(':value', $value);
$sth->execute();
return $sth->fetchColumn() >= 1;
}
这是一个完美的方式来写这个逻辑。如果您从
If
正文返回,则肯定可以忽略else
不过,这样做更为简洁:
return $sth->fetchColumn() >= 1;
这实际上是一个偏好的问题
就个人而言,我喜欢每个函数/方法只有一个返回语句。这需要使用一个变量来保存返回值,但希望得到的是更可读的代码。这是正确的。而且非常熟练。只需返回比较结果:
public function checkIfExist($table ,$key, $value)
{
$sth = $this->dbh->prepare("SELECT COUNT(*) FROM $table WHERE $key = :value");
$sth->bindParam(':value', $value);
$sth->execute();
return ($sth->fetchColumn() >= 1);
}
我经常使用这种编码:
function do_something($arg)
{
if(some_condition_fails($arg))
{
return false;
}
if(some_other_condition_fails($arg))
{
return false;
}
//do it
return $result;
}
实际上,在不需要的代码周围添加额外的块比不需要它更脏(在我看来)
return$sth->fetchColumn()>=1代码>这就是我喜欢em的方式。3人比我强,只需返回比较结果即可。@mhitza和UPVOLTERS:这是一个很大的问号,无论这种书写方式是否更好,它肯定可读性和可维护性都较差。@markus人仍在争论哪些括号样式可读性较低/更高,我不想说:)@mhiza不是关于方括号的,方括号和代码的可维护性无关,不一定更好。只是更紧凑。因为如果他以后想在return true
之前添加一条指令,他将不得不更改所有指令。它看起来整洁易读,我认为比我使用的更好,谢谢:)@markus:你写这样的if语句吗<代码>如果((a>b)=true){…}
或者类似的情况<代码>如果(a>b){…}当然是第二个。如果是第一个,则为if(true==(a>b)),反之亦然。但我们在谈论别的事情!if语句有一个“if”,它提供了我们正在讨论的符号所缺少的语义信息。