PHP da OOP da getter va setterlarning afzalliklari
Oldingi darsda biz har bir xususiyat uchun getter va setter yaratdik. Savol tug'ilishi mumkin, nima uchun bunday murakkabliklar kerak, axir amalda bir xil ta'sirga erishish mumkin, agar xususiyatlarni shaxsiy emas, balki ochiq qilib qo'ysak.
Gap shundaki, getter va setterlar afzallikga ega: xususiyatga murojaat qilishdan oldin ba'zi tekshiruvlarni bajarish mumkin. Masalan, bizning holatimizda ism va familiyani yozishda yangi qiymat bo'sh satr emasligini tekshirishimiz mumkin:
<?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;
}
}
?>
Keling, bu qanday ishlashini tekshiramiz. Boshlash uchun klass obyektini yaratamiz:
<?php
$user = new User();
?>
Endi to'g'ri qiymatni yozishga harakat qilaylik:
<?php
$user->setName('john');
?>
Endi noto'g'ri qiymatni yozishga harakat qilaylik:
<?php
$user->setName(''); // xato
?>
Employee klassida yosh uchun setterda
yosh 0 dan 120 gacha bo'lishi kerakligini
tekshiradigan qiling.
Employee klassida maosh uchun getterda
maosh qiymati o'qilganda uning oxiriga
dollar belgisi qo'shiladigan qiling.