Предимства на сетъри и гетъри в ООП в 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 в гетъра за
заплата направете така, че
при четене на заплатата в края на
стойността й да се добавя знак за долар.