我在许多文件中使用了以下代码块,条件略有变化,输出也相应地变化。我该如何优化?
$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);
答案 0 :(得分:1)
您可以创建一个接收回调谓词的函数:
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);