En la siguiente clase vamos a añadir un constructor que nos obligue a poner el nombre, el dni, pero que el sueldo sea opcional (lo podemos pasar o no) y que si no lo pasamos por defecto valga 1000:
class Empleado {
public $nombre;
public $dni;
public $sueldo;
function verEmpleado() {
return $this->nombre . " - " . $this->dni . " - " . $this->sueldo;
}
function sueldoNeto() {
return $this->sueldo * 0.85;
}
}
Solución:
class Empleado {
public $nombre;
public $dni;
public $sueldo;
function __construct($nombre, $dni, $sueldo = 1000) {
if (empty($nombre)){
throw new Exception("El nombre no puede estar vacío");
}
if(!$this->validar_dni($dni)){
throw new Exception("DNI no válido");
}
if ($sueldo<900){
throw new Exception("El sueldo no puede ser menor que el interprofesional");
}
$this->nombre = $nombre;
$this->dni = $dni;
$this->sueldo = $sueldo;
}
function verEmpleado() {
return $this->nombre . " - " . $this->dni . " - " . $this->sueldo;
}
function sueldoNeto() {
return $this->sueldo * 0.85;
}
function validar_dni($dni) {
$letra = substr($dni, -1);
$numeros = substr($dni, 0, -1);
if (substr("TRWAGMYFPDXBNJZSQVHLCKE", $numeros % 23, 1) == $letra && strlen($letra) == 1 && strlen($numeros) == 8) {
return true;
} else {
return false;
}
}
}