如何在父类函数中更改受保护变量的值

时间:2018-11-26 07:59:08

标签: php codeigniter inheritance

我有2节课     1.用户(父母)     2. validate(child)

用户我对用户进行身份验证

class User extends CI_Controller {
    protected $access = "hii";

    function v_c(){
        $access = $this->model2->getAccess();
        $this->access = $access;
        redirect('user/storelist');
    }

}

class validate extends User{
    function __construct() {
        parent::__construct();
        print_r($this->access);die;
    }
}

在验证类$this->access中返回'hii'而不是给我访问值。 我想在父类函数中更改受保护变量的值,然后在子类中检索它吗? 我在这里做错了什么? 谢谢您的建议。

2 个答案:

答案 0 :(得分:0)

<?php
class User extends CI_Controller {
    protected $access = "hii";

    function v_c(){
        $access = $this->model2->getAccess();
        $this->access = $access;
        redirect('user/storelist');
        return $access;
    }

}

class validate extends User{
    function __construct() {
        parent::__construct();
        print_r($this->v_c());die;
    }
}

您的$access变量是受保护的,因此您尝试像您所说的那样print_r指向它,但是您指向受保护的变量。另一方面,可以通过将$access函数中的v_c变量返回到函数内部并尝试访问函数本身而不是变量来对其进行访问。

由于扩展了父类(用户),因此您可以访问它的函数并从中获取返回的值。

答案 1 :(得分:0)

您应该更改值protected $access = " "