Setterite ja getterite eelised OOP-s PHP-s
Eelmises õppetükis tegime iga atribuudi jaoks getteri ja setteri. Võib tekkida küsimus, miks on vaja selliseid keerukusi, kuna tegelikult sama efekti saab, kui teha atribuudid avalikuks, mitte privaatseteks.
Asi on selles, et getteritel ja setteritel on eelis: enne atribuudi poole pöördumist saab teha mõningaid kontrollimisi. Näiteks meie puhul saame nime ja perekonnanime kirjutamisel kontrollida, et uus väärtus ei oleks tühi string:
<?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;
}
}
?>
Kontrollime, kuidas see töötab. Kõigepealt loome klassi objekti:
<?php
$user = new User();
?>
Nüüd proovime kirjutada korrektset väärtust:
<?php
$user->setName('john');
?>
Ja nüüd proovime kirjutada ebakorrektset:
<?php
$user->setName(''); // viga
?>
Klassis Employee tehke vanuse setteris
kontroll, et vanus peaks olema
vahemikus 0 kuni 120.
Klassis Employee tehke palga getteris
nii, et palga lugemisel lisataks selle
väärtuse lõppu dollari märk.