これは私のクラスです
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() メソッド内で初期化すると、サブクラスはその値にアクセスできます..これはどのように可能ですか? なぜ?