Forma correcta de usar constructor en clase hija
Publicado por facundo (185 intervenciones) el 09/08/2017 00:35:19
Hola gente como andan? Estoy practicando con herencia y me surgieron unas dudas, tengo esta clase:
y abajo (o en index.php) hago una instancia de la clase hija(usa el constructor de la clase padre "nombre,apellido,nickname,type)
El tema que al hacer un var_dump de $hija me aparece esto:
UsuarioAdministrador (object) [Object ID #2][6 properties]
id:protected: (string) 123
type:Usuario:private: (string) usuario admin
nickname:Usuario:private: (string) pepegrillin
nombre:Usuario:private: (string) pepe
apellido:Usuario:private: (string) grillo
password:Usuario:private: (string) e10adc3949ba59abbe56e057f20f883e
y si en la clase Hija hago un __construct de esta manera:
si hago un var_dump de $hija me sale esto:
id:protected: (string) 525
type:Usuario:private: (null) NULL
nickname:Usuario:private: (null) NULL
nombre:Usuario:private: (null) NULL
apellido:Usuario:private: (null) NULL
password:Usuario:private: (string) e10adc3949ba59abbe56e057f20f883e
nickname: (string) pepegrillin
nombre: (string) pepe
apellido: (string) grillo
type: (string) usuario admin
El tema es que si lo hago de la primer manera, no me deja acceder a $this->nickname (al menos que este sea protected y no private)
Entonces... Cual es la manera correcta de hacer un constructor? Y esta bien si se hace de la primer manera y tener que poner las variables en "protected" o es mejor hacerlo de la segunda manera y dejar las variables en "Private" ? Lo que me parece raro es los var dump que uno dice "nombre:Usuario:private: (string) pepe" y en el segundo caso dice solo por ejemplo "nombre : (string) pepe"
Espero que entiendan y puedan ayudarme.Gracias, saludos!
1
2
3
4
5
6
7
8
class Hija extends Usuario
{
public function saludar()
{
return 'Bienvenido admin ' . parent::getNickname();
}
}
1
$hija = new Hija('pepe','grillo','pepegrillin','usuario admin');
El tema que al hacer un var_dump de $hija me aparece esto:
UsuarioAdministrador (object) [Object ID #2][6 properties]
id:protected: (string) 123
type:Usuario:private: (string) usuario admin
nickname:Usuario:private: (string) pepegrillin
nombre:Usuario:private: (string) pepe
apellido:Usuario:private: (string) grillo
password:Usuario:private: (string) e10adc3949ba59abbe56e057f20f883e
y si en la clase Hija hago un __construct de esta manera:
1
2
3
4
5
6
7
8
9
public function __construct($nombre,$apellido,$nickname,$type)
{
$this->nickname = $nickname;
$this->nombre = $nombre;
$this ->apellido = $apellido;
$this->type=$type;
$this->id = '525';
}
$hija = new Hija('pepe','grillo','pepegrillin','usuario admin');
si hago un var_dump de $hija me sale esto:
id:protected: (string) 525
type:Usuario:private: (null) NULL
nickname:Usuario:private: (null) NULL
nombre:Usuario:private: (null) NULL
apellido:Usuario:private: (null) NULL
password:Usuario:private: (string) e10adc3949ba59abbe56e057f20f883e
nickname: (string) pepegrillin
nombre: (string) pepe
apellido: (string) grillo
type: (string) usuario admin
El tema es que si lo hago de la primer manera, no me deja acceder a $this->nickname (al menos que este sea protected y no private)
Entonces... Cual es la manera correcta de hacer un constructor? Y esta bien si se hace de la primer manera y tener que poner las variables en "protected" o es mejor hacerlo de la segunda manera y dejar las variables en "Private" ? Lo que me parece raro es los var dump que uno dice "nombre:Usuario:private: (string) pepe" y en el segundo caso dice solo por ejemplo "nombre : (string) pepe"
Espero que entiendan y puedan ayudarme.Gracias, saludos!
Valora esta pregunta
0