这是我的课
abstract class DataStore_Adapter {
private $id;
abstract function update();
abstract function insert();
function __construct() {
$this-> id = 3;
}
function save() {
if(! is_null($this->id)) {
$this->update();
} else {
$this->insert();
}
}
}
class VS_DataStroe_Adapter extends DataStore_Adapter {
function __construct() {
parent:: save();
}
function update() {
echo "successfully updated!";
}
function insert() {
echo "successfully inserted!";
}
}
$vs_data = new VS_DataStroe_Adapter();
运行此代码我得到结果
插入成功!
如果我删除
$this-> id = 3;
从 DataStore_Adapter 的构造方法并将其放在函数 save() 中,它给了我结果;
成功更新!
我需要澄清这种行为。由于我已将 $id 声明为私有变量,因此我知道它只能通过 DataStore_Adapter 类访问。但是当我在 save() 方法中初始化它时,子类可以访问它的值。这怎么可能?为什么?