¿Debe el método de un objeto acceder a una propiedad protegida de otro objeto de la misma clase?Método de acceso a la propiedad protegida de otro objeto de la misma clase
Estoy codificando en PHP, y acabo de descubrir que se permite el acceso a la propiedad protegida de un objeto mediante un método de la misma clase, incluso si no es del mismo objeto.
En el ejemplo, al principio, obtendrá "3" en la salida, ya que la función readOtherUser habrá accedido correctamente al valor, y luego se producirá un error fatal de PHP, ya que el programa principal habrá fallado accediendo al mismo valor
<?php
class user
{
protected $property = 3;
public function readOtherUser()
{
$otherUser = new user();
print $otherUser->property;
}
}
$user = new user();
$user->readOtherUser();
print $user->property;
?>
Es esto un error de PHP o es el comportamiento previsto (y voy a tener que volver a aprender este concepto ... :)) (y hay referencias al hecho)? ¿Cómo se hace en otros lenguajes de programación?
Gracias!
NB. Ruby's ['private'] (http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html#s4) se comporta como se describe: no se puede llamar a un método privado en una instancia diferente. – outis