关于PHP项目优化多个if的解决方案

在写个人后台接口时有大量的请求类型,需要根据请求类型选择执行相关的方法,之前使用的使用大量的if...elseif,在添加需求四极为的不方便。通过查询资料发现可以通过call_user_func进行优化,方案如下:

原代码:

class Users {
private $app_function ;
   public function RunUser(){
     if($this->app_function == 'sign_up'){
          $this->Sign_up();
     }elseif($this->app_function == 'sign_in') {
          $this->Sign_in();
     }elseif($this->app_function == 'ceshi'){
          $this->_ceshi();
      }
   }
}

优化后:

class Users {
    private $app_function ;

    public function RunUser(){

        $app_function_set=[
            'sign_up'=>'Sign_up',
            'sign_in'=>'Sign_in',
            'ceshi'=>'_ceshi'
        ];

        $ceshi = $app_function_set[$this->app_function];
        call_user_func(array($this, $ceshi));
    }
}

优化之后后续增加方法时可以不用增加elseif,只需要设置$app_function_set即可,避免修改代码增加。

技术有限,后续在进行学习

文章评论已关闭