Setterių ir getterių pranašumai OOP PHP
Ankstesnėje pamokoje mes sukūrėme kiekvienam savybei getterį ir setterį. Gali kilti klausimas, kam reikalingi tokie sudėtingumai, nes praktiškai to pačio efekto galima pasiekti, jei savybes padarytume viešas, o ne privačias.
Reikalas tas, kad getteriai ir setteriai turi pranašumą: prieš kreipiantis į savybę galima atlikti tam tikrus patikrinimus. Pavyzdžiui, mūsų atveju mes įrašant vardą ir pavardę galime patikrinti, kad nauja reikšmė nėra tuščia eilutė:
<?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;
}
}
?>
Patikrinkime, kaip tai veikia. Pirmiausia sukurkime klasės objektą:
<?php
$user = new User();
?>
Dabar pabandykime įrašyti teisingą reikšmę:
<?php
$user->setName('john');
?>
O dabar pabandykime įrašyti neteisingą:
<?php
$user->setName(''); // klaida
?>
Klasėje Employee setteryje
amžiaus atlikite patikrinimą, kad
amžius turi būti
nuo 0 iki 120.
Klasėje Employee getteryje
atlyginimo padarykite taip, kad
skaitant atlyginimą prie jo
reikšmės galo būtų pridedamas dolerio ženklas.