Ventajas de los getters y setters en POO en PHP
En la lección anterior, creamos un getter y un setter para cada propiedad. Puede surgir la pregunta: ¿por qué son necesarias tales complejidades, si de hecho se puede lograr el mismo efecto haciendo las propiedades públicas, no privadas?
El caso es que los getters y setters tienen una ventaja: antes de acceder a la propiedad se pueden realizar algunas comprobaciones. Por ejemplo, en nuestro caso, al asignar el nombre y el apellido podemos verificar que el nuevo valor no sea una cadena vacía:
<?php
class User {
private $name;
private $surn;
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'name is incorrect';
}
}
public function setSurn($surn) {
if (strlen($surn) > 0) {
$this->surn = $surn;
} else {
echo 'surn is incorrect';
}
}
public function getName() {
return $this->name;
}
public function getSurn() {
return $this->surn;
}
}
?>
Comprobemos cómo funciona esto. Primero, creemos un objeto de la clase:
<?php
$user = new User();
?>
Ahora intentemos asignar un valor correcto:
<?php
$user->setName('john');
?>
Y ahora intentemos asignar uno incorrecto:
<?php
$user->setName(''); // error
?>
En la clase Employee
, en el setter
de la edad, implemente una verificación para asegurar
que la edad debe estar
entre 0
y 120
.
En la clase Employee
, en el getter
del salario, hágalo de modo que
al leer el salario, al final de su
valor se agregue el signo de dólar.