从其他类php看变量

see variable from other class php

如果B类不扩展A类,而A类调用新的B类,则可以这样做。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    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();


对于您要创建的所有对象来说,:$lang是通用的吗?然后将这个变量设为静态。如果没有,可以将::$lang作为参数传递给B构造函数。那就是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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;
    }

}

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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;
    }

}


你好像把各种概念混在一起了。的$lang属性是一个实例级变量(因为它没有被定义为静态变量),因此您不能像尝试的那样静态访问它。如果您将变量声明为静态变量,那么您将可以访问它,但是如果您有多个类A实例更改它,那么它将在类级别而不是实例级别更改。


像这样改变B类:

1
2
3
4
5
6
7
class B extends A{

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

}