0

项目中使用的框架thinkphp的controller.php中有如下函数,其中有这行代码:“$conf = $this->$action”。

“if (property_exists($this, $action))” 正在检查 $this 类中是否存在属性 $action。形成下一行代码“if (key_exists('login', $conf))”,在我看来 $conf 是一个数组。

我的问题是:“$conf = $this->$action”到底在做什么,将一个数组(属性$action?为什么$action是一个数组?)分配给变量$conf?

public function checkAccessControl()
        {
            if (Config::get('frame.controller.checkAccessControl.exec')) {
                $action = $this->request ->action(true);
                if (property_exists($this, $action)) {
                    $conf = $this->$action;
                    if (key_exists('login', $conf)) {
                        if ($conf['login'] === true && $this->if_login === false) {
                            $this->access_control_check = false;
                            $this->response(["error"=>"未登录用户无权访问"],[],401,'json');//要求用户的身份认证
                        } else {
                            $this->access_control_check = true;
                        }
                    } else {
                        $this->access_control_check = false;
                        $this->response(["error"=>"代码错误:未标注访问类型"],[],500);//服务器内部错误,无法完成请求(未在控制器中标注login的访问控制)
                    }
                } else {
                    $this->access_control_check = false;
                    $this->response(["error"=>"代码错误:未标注访问控制"],[],500,'json',['action'=>$this->request->action(true)]);//服务器内部错误,无法完成请求(未在控制器中标注方法的访问控制)
                }
            } else {
                $this->access_control_check = Config::get('frame.controller.checkAccessControl.default.access_control_check');

            }
        }
4

0 回答 0