Revizando "php.net/manual" por una duda que tenia sobre visibilidad de las propiedades y metodos de un objeto, encontre un codigo que demuestra que en PHP es posible acceder a propiedades privadas de un objeto, desde otra instancia de la misma clase, a traves de un metodo de la misma clase.
El ejemplo (el cual modifique del original para hacer mas pruebas) hago una clase "Prueba" con una propiedad publica y otra privada
seria algo como el siguiente:
Código PHP:
class Prueba{
private $privada;
public $publica;
function Prueba($privada, $publica){
$this->privada = $privada;
$this->publica = $publica;
}
function mostrarActual(){
echo("<br> valor Privado: ".$this->privada);
echo(" valor Publico: ".$this->publica);
}
function mostrarOtro($Obj){
echo("<br> Otro valor Privado: ".$Obj->privada);
echo(" Otro valor Publico: ".$Obj->publica);
}
private function establecerDatos($privada, $publica){
$this->privada = $privada;
$this->publica = $publica;
}
static function crearDDDDD(){
$x = new Prueba("Privado_CCCCC", "Publico_CCCCC");
$x->establecerDatos("Privado_DDDDD", "Publico_DDDDD");
return $x;
}
}
$a = new Prueba("Privado_AAAAA", "Publico_AAAAA");
$b = new Prueba("Privado_BBBBB", "Publico_BBBBB");
$a->mostrarActual();
// MUESTRA valor Privado: Privado_AAAAA valor Publico: Publico_AAAAA
$b->mostrarActual();
// MUESTRA valor Privado: Privado_BBBBB valor Publico: Publico_BBBBB
$b->mostrarOtro($a);
// MUESTRA Otro valor Privado: Privado_AAAAA Otro valor Publico: Publico_AAAAA
$a->mostrarOtro($b);
// MUESTRA Otro valor Privado: Privado_BBBBB Otro valor Publico: Publico_BBBBB
Prueba::crearDDDDD()->mostrarActual();
// MUESTRA valor Privado: Privado_DDDDD valor Publico: Publico_DDDDD
$a->establecerDatos("Privado_EEEEE", "Publico_EEEEE");
// MUESTRA Fatal error: Call to private method Prueba::establecerDatos()
// Como se esperaba...
Gracias !!