Avantages des accesseurs et mutateurs en POO en PHP
Dans la leçon précédente, nous avons créé un accesseur et un mutateur pour chaque propriété. La question peut se poser de savoir pourquoi de telles complexités sont nécessaires, car en fait le même effet pourrait être obtenu en rendant les propriétés publiques plutôt que privées.
Le fait est que les accesseurs et mutateurs présentent un avantage : avant d'accéder à la propriété, il est possible d'effectuer certaines vérifications. Par exemple, dans notre cas, lors de l'assignation du nom et du prénom, nous pouvons vérifier que la nouvelle valeur n'est pas une chaîne vide :
<?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;
}
}
?>
Vérifions comment cela fonctionne. Commençons par créer un objet de la classe :
<?php
$user = new User();
?>
Maintenant, essayons d'assigner une valeur correcte :
<?php
$user->setName('john');
?>
Et maintenant, essayons d'assigner une valeur incorrecte :
<?php
$user->setName(''); // erreur
?>
Dans la classe Employee, dans le mutateur
de l'âge, implémentez une vérification pour que
l'âge doit être compris
entre 0 et 120.
Dans la classe Employee, dans l'accesseur
du salaire, faites en sorte que
lors de la lecture du salaire, un signe dollar
soit ajouté à la fin de sa valeur.