【发布时间】:2014-11-03 09:05:49
【问题描述】:
我在 PHP 中有一个类,它在创建实例时将自身的实例作为参数。下面是一个模拟类。
abstract class AAA {
protected $_a;
protected $_b;
public function __construct($a, $b) {
$this->_a = $a;
$this->_b = $b;
}
}
class BBB extends AAA {
private $_aaa;
public function __construct($a, $b, AAA $aaa) {
parent::__construct($a, $b);
$this->_aaa = $aaa;
}
}
在BBB 的方法中,我可以完全访问$aaa 的受保护属性。下面是一个例子。
# BBB method
public function getAAAprotected() {
return array(
'_a' => $this->_aaa->_a,
'_b' => $this->_aaa->_b,
);
}
我很困惑这怎么可能。我对protected 属性的理解是它们只能被该实例中的扩展类访问,或者我一直都错了。
有人可以解释一下,或者指点一下,这样我就可以完全理解protected/private的方法/函数什么时候是这样的?
【问题讨论】:
-
哈哈 认真投票?为什么那些把一个看似简单的答案给自己看成一个毫无意义的问题的人。
-
要么我需要睡觉,要么你只是回答了你自己的问题
-
我不确定类中属性/方法的可见性是如何工作的。我想我没有回答。 :)
标签: php object private protected