Setteru un getteru priekšrocības OOP PHP
Iepriekšējā nodarbībā mēs izveidojām katram īpašumam getteri un setteri. Var rasties jautājums, kāpēc ir vajadzīgas tādas sarežģītības, jo faktiski tādu pašu efektu var sasniegt, ja padara īpašumus publiskiem, nevis privātiem.
Lieta ir tāda, ka getteriem un setteriem ir priekšrocība: pirms piekļūšanas īpašumam var veikt dažas pārbaudes. Piemēram, mūsu gadījumā, ierakstot vārdu un uzvārdu, mēs varam pārbaudīt, ka jaunā vērtība nav tukša virkne:
<?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;
}
}
?>
Pārbaudīsim, kā tas darbojas. Vispirms izveidosim klases objektu:
<?php
$user = new User();
?>
Tagad mēģināsim ierakstīt korektu vērtību:
<?php
$user->setName('john');
?>
Un tagad mēģināsim ierakstīt nekorektu:
<?php
$user->setName(''); // kļūda
?>
Klasē Employee setterā
vecuma veiciet pārbaudi, ka
vecumam jābūt
no 0 līdz 120.
Klasē Employee getterā
algas izdariet tā, lai
lasot algu beigās tās
vērtībai tiktu pievienota dolāra zīme.