如何优化重复的IF-Else代码



我在许多文件中使用了以下代码块,但条件略有变化,输出也相应变化。我如何优化它?

$url = 'changeAble';
if ($this->someModel->someMethod()) {
$msg = 'Changeable message';
$msg_type = SUCCESS;
}else{
$msg = 'An error occured.';
$msg_type = ERROR;
}
redirectWithFlashData($msg, $msg_type, url);

更新:我已经学会了优化我的代码。这是:

$url = 'changeAble';
if($this->someModel->someMethod()) 
redirectWithFlashData('Changeable message', SUCCESS, $url);
redirectWithFlashData('An error occured.', ERROR, $url);

您可以创建一个接收回调谓词的函数:

function redirectWithFlashDataIfNeeded($predicate, $url) {
if ($predicate()) {
$msg = 'Changeable message';
$msg_type = SUCCESS;
} else {
$msg = 'An error occured.';
$msg_type = ERROR;
}
redirectWithFlashData($msg, $msg_type, $url);
}

然后这样称呼它:

$url = 'changeAble';
redirectWithFlashDataIfNeeded(function() {
return $this->someModel->someMethod();
}, $url);

或者直接传递布尔结果:

function redirectWithFlashDataIfNeeded($flag, $url) {
if ($flag) {
$msg = 'Changeable message';
$msg_type = SUCCESS;
} else {
$msg = 'An error occured.';
$msg_type = ERROR;
}
redirectWithFlashData($msg, $msg_type, $url);
}
...
$url = 'changeAble';
redirectWithFlashDataIfNeeded($this->someModel->someMethod(), $url);

最新更新