私はすべてを書き直すことなくPHPクラスを拡張しようとしています。ここでは一例です:私は、スクリプトを実行したときに別のものを拡張するPHPクラスはどのようにプライベート関数を継承できますか?
<?
$a = new foo();
print $a->xxx();
$b = new bar();
print $b->xxx();
class foo {
const something = 10;
public function xxx() {
$this->setSomething();
return $this->something;
}
private function setSomething() {
$this->something = self::something;
}
}
class bar extends foo {
public function xxx() {
$this->setSomething();
$this->something++;
return $this->something;
}
}
?>
は、しかし、私は次のエラーを取得する:
Fatal error: Call to private method foo::setSomething() from context 'bar' in test.php on line 23
バーが(プライベート関数setSomethingを継承していないように思わ)。 fooクラスを変更せずにこれを修正するにはどうすればよいですか?
'setSomething()'を 'protected'に変更することはできませんか? – alex
上記のとおり、fooクラスは変更されません。どのように私はこれを行うことができますか? –
ジョブには適切なツールを使用します。つまり、そのツールを「保護」します。 – alex