Prednosti seterjev in geterjev v OOP v PHP
V prejšnji lekciji smo naredili za vsako lastnost geter in seter. Lahko se pojavi vprašanje, zakaj so potrebne takšne zapletenosti, saj dejansko istega učinka lahko dosežemo, če naredimo lastnosti javne, namesto zasebne.
Bistvo je v tem, da imajo geterji in seterji prednost: pred dostopom do lastnosti lahko izvedemo nekatere preverbe. Na primer, v našem primeru lahko pri zapisovanju imena in priimka preverimo, da nova vrednost ni prazen niz:
<?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;
}
}
?>
Preverimo, kako to deluje. Za začetek ustvarimo objekt razreda:
<?php
$user = new User();
?>
Zdaj poskusimo zapisati korektno vrednost:
<?php
$user->setName('john');
?>
Zdaj pa poskusimo zapisati nekorektno:
<?php
$user->setName(''); // napaka
?>
V razredu Employee v seterju
starosti naredite preverbo, da
mora biti starost
od 0 do 120.
V razredu Employee v geterju
plače naredite tako, da
se pri branju plače na konec njene
vrednosti doda znak dolarja.