Avantajele setter-ilor și getter-ilor în OOP în PHP
În lecția anterioară am creat pentru fiecare proprietate un getter și un setter. Poate apărea întrebarea, de ce sunt necesare astfel de complicații, din moment ce efectul același poate fi atins dacă facem proprietățile publice, nu private.
Ideea este că getter-ele și setter-ele au avantajul: înainte de accesarea proprietății se pot efectua unele verificări. Spre exemplu, în cazul nostru la scrierea numelei și prenumelui putem verifica, ca noua valoare să nu fie un șir gol:
<?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;
}
}
?>
Să verificăm cum funcționează asta. Pentru început să creăm un obiect al clasei:
<?php
$user = new User();
?>
Acum să încercăm să scriem o valoare corectă:
<?php
$user->setName('john');
?>
Iar acum să încercăm să scriem una incorectă:
<?php
$user->setName(''); // eroare
?>
În clasa Employee în setter-ul
vârstei faceți o verificare ca
vârsta să fie
de la 0 până la 120.
În clasa Employee în getter-ul
salariului faceți astfel încât
la citirea salariului la sfârșitul
valorii sale să fie adăugat simbolul dolar.