Výhody setterov a getterov v OOP v PHP
V predchádzajúcej lekcii sme vytvorili pre každú vlastnosť getter a setter. Môže vzniknúť otázka, na čo sú takéto komplikácie potrebné, veď fakticky rovnakého efektu sa dá dosiahnuť, ak urobíme vlastnosti verejnými, nie súkromnými.
Vec sa má tak, že gettery a settery majú výhodu: pred prístupom k vlastnosti je možné vykonať niektoré kontroly. Napríklad v našom prípade pri zápise mena a priezviska môžeme skontrolovať, že nová hodnota nie je prázdny reťazec:
<?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;
}
}
?>
Poďme otestovať, ako to funguje. Najprv vytvoríme objekt triedy:
<?php
$user = new User();
?>
Teraz skúsme zapísať korektnú hodnotu:
<?php
$user->setName('john');
?>
A teraz skúsme zapísať nekorektnú:
<?php
$user->setName(''); // chyba
?>
V triede Employee v setteri
veku vykonajte kontrolu, že
vek musí byť
od 0 do 120.
V triede Employee v getteri
platu urobte tak, aby
pri čítaní platu na koniec jeho
hodnoty bol pridaný znak dolára.