PHP да ООПда сеттерлар ва геттерларнинг афзалликлари
Олдинги дарсда биз ҳар бир хусусият учун геттер ва сеттер ясадик. Нега бундай мураккабликлар зарур, деган савол туғилуши мумкин, ахоли, шунингдек натижага эришиш мумкин, агар хусусиятларни хусусий эмас, балки оммавий қилиб қўйсак.
Гaп шундаки, геттерлар ва сеттерлар афзалликка эга: хусусиятга мурожаат қилишдан олдин баъзи текширишларни бажариш мумкин. Мисол учун, бизнинг ҳолатимизда исм ва фамилияни ёзishда биз янги қиймат бўш сатр эмаслигини текширишимиз мумкин:
<?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();
?>
Энди мос келувчи қийматни ёзishға ҳаракат қиламиз:
<?php
$user->setName('john');
?>
Энди эса мос келмаган қийматни ёзishға ҳаракат қиламиз:
<?php
$user->setName(''); // хато
?>
Employee классасида ёш учун сеттерда
ёш 0 дан 120 гача бўлиши кераклигини
текширадиган код ёзинг.
Employee классасида маош учун геттерда
маош қиймати ўқилганда, унинг охирига
доллар белгиси қўшиладиган қилиб такинг.