Zalety setterów i getterów w OOP w PHP
W poprzedniej lekcji zrobiliśmy dla każdej właściwości getter i setter. Może pojawić się pytanie, po co potrzebne są takie skomplikowania, przecież faktycznie tego samego efektu można osiągnąć, jeśli zrobić właściwości publicznymi, a nie prywatnymi.
Chodzi o to, że gettery i settery mają zalety: przed odwołaniem się do właściwości można wykonywać pewne sprawdzenia. Na przykład, w naszym przypadku przy zapisie imienia i nazwiska możemy sprawdzić, że nowa wartość nie jest pustym ciągiem znaków:
<?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;
}
}
?>
Sprawdźmy, jak to działa. Na początek stwórzmy obiekt klasy:
<?php
$user = new User();
?>
Teraz spróbujmy zapisać prawidłową wartość:
<?php
$user->setName('john');
?>
A teraz spróbujmy zapisać nieprawidłową:
<?php
$user->setName(''); // błąd
?>
W klasie Employee w setterze
wieku zrób sprawdzenie, że
wiek powinien być
od 0 do 120.
W klasie Employee w getterze
pensji zrób tak, żeby
przy odczycie pensji na koniec jej
wartości był dodawany znak dolara.