A getterek és setterek előnyei az OOP-ban PHP-ben
Az előző leckében minden tulajdonsághoz készítettünk gettert és settert. Felmerülhet a kérdés, miért szükségesek ezek a bonyolultságok, hiszen gyakorlatilag ugyanazt az eredményt el lehetne érni, ha a tulajdonságokat nyilvánossá tennénk, nem pedig priváttá.
A dolog az, hogy a gettereknek és settereknek van előnyük: a tulajdonsághoz való hozzáférés előtt végezhetünk bizonyos ellenőrzéseket. Például a mi esetünkben a név és vezetéknév beállításakor ellenőrizhetjük, hogy az új érték nem üres sztring-e:
<?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;
}
}
?>
Ellenőrizzük, hogyan működik ez. Először hozzunk létre egy objektumot az osztályból:
<?php
$user = new User();
?>
Most próbáljunk meg helyes értéket beállítani:
<?php
$user->setName('john');
?>
És most próbáljunk meg helytelen értéket beállítani:
<?php
$user->setName(''); // hiba
?>
A Employee osztályban
a kor setterében
végezz ellenőrzést, hogy
a kor 0 és 120 között legyen.
A Employee osztályban
a fizetés getterében
tedd meg, hogy
a fizetés értékének
olvasásakor annak végére
egy dollárjel kerüljön.