Предности сеттера и гетера у ООП у PHP-у
У претходној лекцији смо направили за свако својство гетер и сетер. Може се поставити питање, чему служе такве компликације, јер у суштини истог ефекта можемо постићи ако својства учинимо јавним, а не приватним.
Ствар је у томе што гетери и сетери имају предност: пре приступа својству можемо извршити неке провере. На пример, у нашем случају при упису имена и презимена можемо проверити, да нова вредност није празан стринг:
<?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;
}
}
?>
Хајде да проверимо како то ради. Прво ћемо креирати објекат класе:
<?php
$user = new User();
?>
Сада ћемо покушати да уписемо исправну вредност:
<?php
$user->setName('john');
?>
А сада ћемо покушати да уписемо неисправну:
<?php
$user->setName(''); // грешка
?>
У класи Employee у сетеру
године направите проверу да
године морају бити
од 0 до 120.
У класи Employee у гетеру
плате направите тако да
при читању плате на крај њене
вредности буде додат знак долара.