Избегайте использования оператора if else при возврате двух методов - PullRequest
1 голос
/ 09 мая 2020

Есть ли способ избежать использования оператора if / else в этой ситуации?

public function test(Request $request)
{
    $m = $request->query('m', 'a');

    if ($m === 'a') {
        $this->test();
    } else if ($m === 'b') {
        $this->r($m);
    }
}

public function r($m)
{
    echo 'Hello!';
}

Я хотел бы вернуть метод import() для $mode = update, но если он refresh, чтобы использовать метод refre sh.

Есть ли более чистый способ подойти к этому?

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Вы можете попробовать тернарный оператор, если знаете, что будете получать только 2 из этих входных данных каждый раз:

public function test(Request $request)
{
    $m = $request->query('m', 'a');

    $m === 'a' ? $this->test() : $this->r($m);
}
0 голосов
/ 09 мая 2020

Когда у вас есть несколько условий для проверки и на их основе вы должны вызвать функцию. просто используйте эту технику:

public function test(Request $request){
    $m = $request->query('m', 'a');
    $method = 'useQueryFor' . $m;
    if (method_exists($this, $method)) {
       return $this->{$method}();
    }
}

public function useQueryFora(){
    echo 'used query for a.';
}

public function useQueryForb(){
    echo 'used query for b.';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...