繁体   English   中英

重构条件语句 PHP

[英]Refactoring conditional statements PHP

我确实使用 post 方法创建了一个 User 类,其中包含像这样的大 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 发出警告避免未使用的私有方法

谢谢你的帮助!

您收到“避免未使用的私有方法”警告,因为您在静态方法中调用私有方法。

尝试:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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