Перавагі сетэраў і гетэраў у ААП у 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 у гетэры
зарплаты зрабіце так, каб
пры чытанні зарплаты ў канец яе
значэння дадаваўся знак даляра.