Предности на сеттери и геттери во ООП во 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 во гетерот
за платата направете така што
при читање на платата на нејзината
вредност да се додаде знакот за долар.