Ver Mensaje Individual
  #11 (permalink)  
Antiguo 25/01/2012, 10:32
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Obtener variables de una clase

El problema es que la propiedad privada no se hereda, por lo mismo de que es privada, como el ejemplo que expuso @maycolalvarez, ve este ejemplo:

Código PHP:
Ver original
  1. <?php
  2. class A
  3. {
  4.     private $_nombre = 'Soy A';
  5.     public function getNombre()
  6.     {
  7.         return $this->_nombre;
  8.     }
  9. }
  10.  
  11. class B extends A
  12. {
  13.     private $_nombre = 'Soy B';
  14.    
  15.     /**
  16.      * @override
  17.      **/
  18.     public function getNombre()
  19.     {
  20.         return $this->_nombre;
  21.     }
  22.    
  23.     public function getAllNombres()
  24.     {
  25.         return $this->getNombre() . ' :: ' . parent::getNombre();
  26.     }
  27. }
  28.  
  29. $b = new B();
  30. echo $b->getAllNombres(); // Soy B :: Soy A

Si tu clase tiene sus getters y setters puedes entonces usar getMethods de reflection para automatizar eso que quieres hacer, ve este ejemplo:
Código PHP:
Ver original
  1. <?php
  2. class Persona
  3. {
  4.     private $_nombre;
  5.     private $_apellido;
  6.    
  7.     public function __construct($nombre, $apellido)
  8.     {
  9.         $this->setNombre($nombre)
  10.              ->setApellido($apellido);
  11.     }
  12.    
  13.     public function setNombre($nombre)
  14.     {
  15.         $this->_nombre = $nombre;
  16.        
  17.         return $this;
  18.     }
  19.    
  20.     public function getNombre()
  21.     {
  22.         return $this->_nombre;
  23.     }
  24.    
  25.     public function setApellido($apellido)
  26.     {
  27.         $this->_apellido = $apellido;
  28.        
  29.         return $this;
  30.     }
  31.    
  32.     public function getApellido()
  33.     {
  34.         return $this->_apellido;
  35.     }
  36. }
  37.  
  38. class Carpintero extends Persona
  39. {
  40.     private $_serruchos;
  41.    
  42.     public function __construct($nombre, $apellido, $serruchos)
  43.     {
  44.         parent::__construct($nombre, $apellido);
  45.         $this->setSerruchos($serruchos);
  46.     }
  47.    
  48.     public function setSerruchos($serruchos)
  49.     {
  50.         $this->_serruchos = $serruchos;
  51.        
  52.         return $this;
  53.     }
  54.    
  55.     public function getSerruchos()
  56.     {
  57.         return $this->_serruchos;
  58.     }
  59.    
  60.     public function serrucha()
  61.     {
  62.         echo 'serruchando';
  63.     }
  64.    
  65.     public function __toString()
  66.     {
  67.         $R = new ReflectionClass($this);
  68.         $sOutput = '';
  69.         foreach ($R->getMethods() as $Method) {
  70.             if (substr($Method->name, 0, 3) == 'get') {
  71.                 $sOutput .= $Method->invoke($this);
  72.             }
  73.         }
  74.        
  75.         return $sOutput;
  76.     }
  77. }
  78.  
  79. $Juan = new Carpintero('Juan', 'Fulano', 4);
  80. echo $Juan;