Как передавать переменные между классами в PHP без расширения - PullRequest
2 голосов
/ 12 июля 2011

Итак, у меня есть такая настройка:

class System extends mysqli{

    function __construct(){
         //user variables such as $this->username are returned here
    }

}

$sys = new System();

class Design{

    function setting(){
        echo $sys->username;
    }

}

$design = new Design();

И все же класс Design не отображает имя пользователя.Я могу повторить имя пользователя вне класса Design, но не внутри класса design.Как я могу пойти по этому поводу?

Ответы [ 3 ]

5 голосов
/ 12 июля 2011

Ответ от всех остальных в порядке, но вы можете очень легко ввести зависимость от системы:

class Design{

    private $sys;

    public function __construct(System $sys) {
       $this->sys = $sys;
    }

    function setting(){
        echo $this->sys->username;
    }
}
$sys = new System;
$design = new Design($sys);
1 голос
/ 12 июля 2011

Ваш класс Design не имеет доступа к переменной $sys.

Вы должны сделать что-то вроде этого:

class System extends mysqli{

    function __construct(){
         //user variables such as $this->username are returned here
    }

}

class Design{

    private $sys;

    function __construct(){
        $this->sys = new System();
    }

    function setting(){
        echo $this->sys->username;
    }

}

$design = new Design();
0 голосов
/ 12 июля 2011

Это потому, что $sys не входит в сферу действия класса Design.

function setting(){
    $sys = new System();
    $sys->username;
}

должно работать, при условии, что username является публичным.

...