如何在PHP中的类之间传递变量而不进行扩展

时间:2011-07-11 21:16:29

标签: php oop class variables extend

所以,我已经得到了这样的设置:

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类之外回显用户名,但不能在设计类中回显。我怎么能这样做呢?

3 个答案:

答案 0 :(得分:5)

其他人的答案都很好,但你可以很好地注入对系统的依赖:

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 :(得分:1)

您的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();

答案 2 :(得分:-1)

那是因为$sys不在Design类的范围内。

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

应该有效,假设username是公开的。