我在许多文件中使用了以下代码块,但条件略有变化,输出也相应变化。我如何优化它?
$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);