【问题标题】:Checking access modifiers of methods检查方法的访问修饰符
【发布时间】:2015-12-24 11:13:48
【问题描述】:

我想知道是否有一种方法可以检查其类中方法的访问修饰符。例如,我想将 Codeigniter 的重新映射方法用于帐户系统:

public function _remap($method, $params = array()){

    if($this->validation->isValidActiveSession()){

        if(method_exists($this, $method))
            call_user_func_array(array($this, $method), $params);
        else
            show_404();

    }else{

        redirect('login');

    }

}

如果我找不到用户的有效会话,他会被拒绝。我还想确保拥有适当会话的用户只能调用公共方法。不幸的是,无论方法是公共的还是私有的,method_exists() 都会返回 true。

我已经有了针对这个特定问题的解决方案:

  • 不在每个公共方法中使用重映射和验证会话

  • 使用存储有效用户可用方法的数组

但感觉不方便,所以我只是在寻找一个“更高级”的解决方案。

【问题讨论】:

    标签: php codeigniter class scope namespaces


    【解决方案1】:

    使用Reflectionmethod

    $reflection = new ReflectionMethod($this, $method);
        if ($reflection->isPublic()) {
            echo "Public method";
        }
       if ($reflection->isPrivate()) {
            echo "Private method";
        }
       if ($reflection->isProtected()) {
            echo "Protected method";
        }
    

    【讨论】:

      猜你喜欢
      • 2014-09-08
      • 1970-01-01
      • 2022-11-18
      • 2014-12-29
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 2011-04-13
      • 2014-11-03
      相关资源
      最近更新 更多