从其他类php看变量

时间:2012-01-28 12:57:01

标签: php class variables

如果B类没有扩展A类但A类调用新的B类,则可以这样做


    class A{
        public $lang;
        public function __construct($lang) {
             $this->lang=$lang;
        }
        public function new_B(){
            return new B();
        }
    }
    class B{

        public function __construct() {
            echo 'lang='.A::$lang;
        }

    }

    $root=new A('eng');
    $root->new_B();

3 个答案:

答案 0 :(得分:1)

你似乎在这里混淆了概念。 A的$ lang属性是一个实例级变量(因为它没有定义为静态),因此您无法像尝试那样静态访问它。如果你要将变量声明为static,那么你可以访问它,但是如果有多个A类实例改变它,它将在类级别而不是实例级别上更改。

答案 1 :(得分:1)

您要创建的所有A对象的A :: $ lang是否通用?然后将此变量设为静态。如果不是,您可以将A :: $ lang作为参数传递给B构造函数。那是

class A{
    public $lang;
    public function __construct($lang) {
        $this->lang=$lang;
    }
    public function new_B(){
        return new B($this->lang);
    }
}
class B{

    public function __construct($lang) {
        echo 'lang='.$lang;
    }

}

以下是使A :: $ lang静态:

class A{
    public static $lang;
    public function __construct($lang) {
        self::$lang=$lang;
    }
    public function new_B(){
        return new B();
    }
}
class B{

    public function __construct() {
        echo 'lang='.A::$lang;
    }

}

答案 2 :(得分:0)

像这样更改B类:

class B extends A{

    public function __construct() {
        echo 'lang='.$this->$lang;  // you can use parent variables like this
    }

}
相关问题