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 } } |