PHP-тегі ООП-дегі сеттерлер мен геттерлердің артықшылықтары
Алдыңғы сабақта біз әрбір қасиет үшін геттер мен сеттер жасадық. Неге мұндай күрделілік қажет деген сұрақ туындауы мүмкін, себебі іс жүзінде бірдей әсерге қол жеткізуге болады, егер қасиеттерді жеке емес, жария етіп жасасақ.
Мәселе мынада, геттерлер мен сеттерлердің артықшылығы бар: қасиетке жүгінер алдында кейбір тексерулерді орындауға болады. Мысалы, біздің жағдайда аты мен тегін жазған кезде біз жаңа мәннің бос жол емес екенін тексере аламыз:
<?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;
}
}
?>
Бұл қалай жұмыс істейтінін тексерейік. Алдымен сынып нысанын жасаймыз:
<?php
$user = new User();
?>
Енді дұрыс мәнді жазуға тынайық:
<?php
$user->setName('john');
?>
Енді дұрыс емес мәнді жазуға тынайық:
<?php
$user->setName(''); // қате
?>
Employee сыныбында жасы үшін сеттерде
жас 0-ден 120-қа дейін болуы керек екенін
тексеруді жасаңыз.
Employee сыныбында жалақы үшін геттерде
жалақы оқылған кезде оның
мәнінің соңына доллар белгісі қосылатындай етіп жасаңыз.