简体   繁体   中英

Refactoring conditional statements PHP

I did make a User class with an post method with large if-elseif statement like this:

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
    }
}

I already tried wit this:

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

But PHPMD send a warning Avoid Unused Private Method

Thanks for your help!

You receive a "Avoid Unused Private Method" warning because you are calling a private method within a static method.

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
    }

}

?>

Call:

$r = (new Users())->post($request);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM