Hola buen día para todos, tengo un problema.
Resulta que estoy haciendo un ejercicio de clases y de repente cuando voy en el ejemplo sobre un método "static" comienzan los problemas, primero, mi código es el siguiente.
(Son dos problemas los comento abajo del código).
Código PHP:
Ver original<?php
class Mulato extends Persona
{
public function getExtNombre()
{
return parent::getConocimiento();
}
}
class Persona
{
private $_Estatura = 1.34;
public $_Nombre = "Pedro";
public $_Apellido = "Gomez";
public $_Fechanacimiento = "04/06/1996";
static $_Sexo = "Masculino";
protected $_Conocimiento = TRUE;
public function __construct($Estatura = NULL, $Nombre = NULL,
$Apellido = NULL, $Fechanacimiento = NULL,
$Sexo = NULL, $Conocimiento = FALSE)
{
$this->_Estatura
=is_null($Estatura) ?
$this->_Estatura
:$Estatura; $this->_Nombre
=is_null($Nombre) ?
$this->_Nombre
:$Nombre; $this->_Apellido
=is_null($Apellido) ?
$this->_Apellido
:$Apellido; $this->_Fechanacimiento
=is_null($Fechanacimiento) ?
$this->_Fechanacimiento
:$Fechanacimiento; self::$_Sexo =is_null($Sexo) ?
$this->_Sexo
:$Sexo; $this->_Conocimiento =$Conocimiento;
}
public function getEstatura()
{
return $this->_Estatura;
}
public function getSexo()
{
return self::$_Sexo;
}
public function getConocimiento()
{
if ($this->_Conocimiento){
echo "Su hoja de vida ah sido registrada gracias por preferirnos.";
}else{
echo "Lo sentimos su hoja de vida no ah sido registrada por que no cumple con los requisitos.";
}
}
public function __destruct()
{
unset($this->_Fechanacimiento
); unset($this->_Conocimiento
);
}
}
$Persona=new Persona(1.69,"Juan Diego","Alfonso","04/08/1995","masculino", TRUE);
//$Mulato =new Mulato();
echo "Buen día señor(a) ".$Persona->_Nombre." ".$Persona->_Apellido.
" usted nació el ".$Persona->_Fechanacimiento." mide ".$Persona->getEstatura().
" y su sexo es ".$Persona->getSexo()."<br>";
echo $Persona->getConocimiento();
?>
Ahora les comento, mi primer problema es que el tutorial y las personas que me dicen que realice este método escriben en el constructor lo siguiente para que no cambie.
Ahora a lo que yo voy es que a mí me toca con "selft", si lo escribo como dice arriba me da un error (Accessing static property Persona::$_Sexo as non static), ¿que puedo hacer para arreglar esto?.
Ahora el segundo error es que si quiero hacer una clase extendida de persona ejemplo una clase mulato, me van a salir también dos errorres con relación al "self", como pueden ver el código arriba la instancia de la clase extendida está comentada debido al error.
Error1: "Accessing static property Mulato::$_Sexo as non static"
Error2: "Undefined property: Mulato::$_Sexo"
PD: el codigo tal como esta escrito arriba sirve pero en el caso que quite el comentario o cambie el "self" por "this->" me dan los errores.
Gracias.