将类($this)的属性$action分配给变量$conf,为什么它是一个数组?

Assigning the property $action of a class ($this) to an variable $conf, why it is an array?

提问人:sunyaer 提问时间:6/6/2020 更新时间:6/6/2020 访问量:33

问:

在项目中使用的 thinkphp 框架的控制器中有以下函数.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');

            }
        }
PHP 变量 这个 thinkphp

评论

0赞 u_mulder 6/6/2020
如果等于“some_prop”,那么是理解吗?$actionconf = $this->$action;conf = $this->some_prop;
0赞 sunyaer 6/6/2020
我不明白的是:在做“$conf = $this->some_prop”时,为什么$conf是数组?是因为“$this->some_prop”是一个数组吗?
0赞 u_mulder 6/6/2020
因为具有与 相同的值。$conf$this->some_prop
0赞 sunyaer 6/6/2020
“$this->some_prop”等于“some_prop$this”吗?下一行 “if ($conf['login'] === true&&...”基本上是说“如果$conf有一个键”login“等于 true”,这意味着 $conf 是一个数组,可以存储$this类的属性$action和属性的值>

答: 暂无答案