Estoy tratando de extender una clase de PHP sin reescribir todo. Aquí está un ejemplo:¿Cómo puede una clase PHP que se extiende a otra heredar una función privada?
<?
$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;
}
}
?>
Sin embargo cuando corro el guión me sale el siguiente error:
Fatal error: Call to private method foo::setSomething() from context 'bar' in test.php on line 23
parecería que la barra no está heredando la setSomething función privada(). ¿Cómo arreglaría esto sin modificar la clase foo?
No puede cambiar 'setSomething()' a 'protected'? – alex
Como dije anteriormente, la clase foo no debe modificarse. ¿De qué otra manera puedo hacer esto? –
Utiliza la herramienta adecuada para el trabajo, es decir, "protegida". – alex