Prednosti setera i getera u OOP-u u PHP
U prethodnoj lekciji smo napravili za svako svojstvo geter i seter. Može se postaviti pitanje, čemu su potrebne takve složenosti, jer se zapravo istog efekta može postići ako se svojstva učine javnim, a ne privatnim.
Stvar je u tome što geteri i seteri imaju prednost: pre pristupa svojstvu može se izvršiti neka provera. Na primer, u našem slučaju pri upisu imena i prezimena možemo proveriti, da nova vrednost nije prazan 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;
}
}
?>
Hajde da proverimo kako ovo radi. Za početak, kreirajmo objekat klase:
<?php
$user = new User();
?>
Sada pokušajmo da upišemo ispravnu vrednost:
<?php
$user->setName('john');
?>
A sada pokušajmo da upišemo neispravnu:
<?php
$user->setName(''); // greška
?>
U klasi Employee u seteru
za godine napravite proveru da
godine moraju biti
od 0 do 120.
U klasi Employee u geteru
za platu uradite tako da
pri čitanju plate na kraj njene
vrednosti bude dodatan znak dolara.