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

时间:2021-04-18 12:10:00

标签: php optimization

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

$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);

1 个答案:

答案 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);
相关问题