PHPの単純なORMにフックシステムを実装したい:
class Record {
public function save() {
if (method_exists($this,"before_save")) {
$this->before_save();
}
//...Storing record etc.
}
}
class Payment extends Record {
private function before_save() {
$this->payed_at = time();
}
}
$payment = new Payment();
$payment->save();
これにより、致命的なエラーが発生します。
致命的なエラー: コンテキスト 'Record' からプライベート メソッド Payment::before_save() を呼び出します
理にかなっています。
スコープを public に変更することもできましたが、それは醜いようです: 誰も Payment 以外は と関係がありませんbefore_save()
。プライベートのままにしておくのが最善です、IMHO。
Record から継承するクラスで Record 呼び出しをプライベート メソッドにするにはどうすればよいですか?