Как изменить значение защищаемой переменной в функции родительского класса - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть 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;
    }
}

вместо предоставления мне значений доступа, в validateкласс $this->access возвращает 'hii'.Я хочу изменить значение защищенной переменной в функции родительского класса, а затем получить его в дочернем классе?Что я здесь не так делаю?Спасибо за ваши предложения.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Вы должны изменить значение protected $access = " "

0 голосов
/ 26 ноября 2018
<?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 может быть доступна, возвращая ее внутри функции и пытаясь получить доступ к самой функции, а не к переменной.

Поскольку вы расширяете свой родительский класс (Users)вы можете получить доступ к его функциям и получить от них возвращаемые значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...