【问题标题】:Refactoring conditional statements PHP重构条件语句 PHP
【发布时间】:2020-03-09 07:16:14
【问题描述】:

我确实使用带有大 if-elseif 语句的 post 方法创建了一个 User 类,如下所示:

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 发送警告避免未使用的私有方法

感谢您的帮助!

【问题讨论】:

  • 根据 PHPMD 消息的重要性,您可以查看是否可以将它们用于已知调用的方法(phpmd.org/documentation/suppress-warnings.html 可能会有所帮助)
  • 嗨@NigelRen 我是干净代码的粉丝,所以它对我来说非常重要
  • 您的确切问题是什么?
  • 嗨@ArSeN,确切的问题是:有没有办法重构 if 语句(或 switch)的使用,这与我在问题中所说的不同?谢谢

标签: php refactoring


【解决方案1】:

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

尝试:

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

【讨论】:

  • 你好@Miqueas弗朗西斯科。我收到“避免未使用的私有方法”警告,因为我从不按名称调用方法(我使用 self::{$method}),PHPMD 假设我声明了一个方法并且从不使用它,但真正的问题是如何重构以与我在问题中所述不同的方式使用 if 语句。感谢您的回复
猜你喜欢
  • 1970-01-01
  • 2018-05-18
  • 1970-01-01
  • 2013-07-03
  • 2017-03-18
  • 1970-01-01
  • 2014-03-13
  • 1970-01-01
  • 2016-04-14
相关资源
最近更新 更多