class Alumno {
private $nombre;
private $nota;
private $apellidos;
//Set y get para todas las propiedades. La nota enter 0 y 10
//El resto no vacíos
//Función aprobado que nos devuelva true si la nota es >=5
//Función nombre completo que nos devuelva el nombre y el apellido
//¿Sería posible hacerlo como propiedad y no como función?
//Functión mágica toString que nos devuelva nombre completo y nota
function __set($name, $value) {
if (property_exists($this, $name)) {
if ($name == 'nota') {
if ($value >= 0 && $value <= 10) {
$this->nota = $value;
} else {
throw new Exception("La nota debe estar entre 0 y 10");
}
} else {
if (!empty($value)) {
$this->$name = $value;
}
}
}
}
function aprobado() {
return $this->nota >= 5;
}
function __get($name) {
if (property_exists($this, $name)) {
return $this->$name;
} else {
if ($name == "nombreCompleto") {
return $this->nombreCompleto();
}
}
}
function nombreCompleto() {
return $this->nombre . " " . $this->apellidos;
}
public function __toString() {
return $this->nombreCompleto." - ".$this->nota;
}
}
$ana = new Alumno();
$ana->nombre="Ana";
$ana->apellidos="Pi";
$ana->nota=7;
echo $ana->nombreCompleto."<br/>";
echo $ana;
?>