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<?php
class A
{
private $_nombre = 'Soy A';
public function getNombre()
{
return $this->_nombre;
}
}
class B extends A
{
private $_nombre = 'Soy B';
/**
* @override
**/
public function getNombre()
{
return $this->_nombre;
}
public function getAllNombres()
{
return $this->getNombre() . ' :: ' . parent::getNombre();
}
}
$b = new B();
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<?php
class Persona
{
private $_nombre;
private $_apellido;
public function __construct($nombre, $apellido)
{
$this->setNombre($nombre)
->setApellido($apellido);
}
public function setNombre($nombre)
{
$this->_nombre = $nombre;
return $this;
}
public function getNombre()
{
return $this->_nombre;
}
public function setApellido($apellido)
{
$this->_apellido = $apellido;
return $this;
}
public function getApellido()
{
return $this->_apellido;
}
}
class Carpintero extends Persona
{
private $_serruchos;
public function __construct($nombre, $apellido, $serruchos)
{
parent::__construct($nombre, $apellido);
$this->setSerruchos($serruchos);
}
public function setSerruchos($serruchos)
{
$this->_serruchos = $serruchos;
return $this;
}
public function getSerruchos()
{
return $this->_serruchos;
}
public function serrucha()
{
echo 'serruchando';
}
public function __toString()
{
$R = new ReflectionClass($this);
$sOutput = '';
foreach ($R->getMethods() as $Method) {
if (substr($Method->name, 0, 3) == 'get') { $sOutput .= $Method->invoke($this);
}
}
return $sOutput;
}
}
$Juan = new Carpintero('Juan', 'Fulano', 4);
echo $Juan;