Рефакторинг условных заявлений PHP - PullRequest
1 голос
/ 08 марта 2020

Я создал класс User с методом post с большим оператором if-elseif, например так:

class Users
{
    public static function  post($request)
    {
        if ($request[0] == 'register') {
            return self::register();
        } elseif ($request[0] == 'login') {
            return self::login();
        } elseif ($request[0] == 'pass') {
            return self::changePass();
        } elseif ($request[0] == 'avatar') {
            return self::updateAvatar();
        } elseif ($request[0] == 'logout') {
            return self::logout();
        }
        throw new Excepcion....;
    }

    private static function register()
    {
        //Return something
    }
    private static function login()
    {
        //Return something
    }
    private static function changePass()
    {
        //Return something
    }
    private static function updateAvatar()
    {
        //Return something
    }
    private static function logout()
    {
        //Return something
    }
}

Я уже пробовал с этим:

public static function post($request)
  {
    $method = $request[0];  
    return self::{$method}();
  }

Но PHPMD отправляет предупреждение Избегайте неиспользованного частного метода

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 09 марта 2020

Вы получаете предупреждение «Избегайте неиспользуемого частного метода», потому что вы вызываете закрытый метод в методе stati c.

try:

<?php

class Users {

    public function post($request) {
        $method = $request[0];
        return $this->{$method}();
    }

    private function register() {
        //Return something
    }

    private function login() {
        //Return something
    }

    private function changePass() {
        //Return something
    }

    private function updateAvatar() {
        //Return something
    }

    private function logout() {
        //Return something
    }

}

?>

Вызов:

$r = (new Users())->post($request);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...