PHP да ООП да ота-синф усулларини қайта белгилаш
Синф-авлод отасининг усулини қайта белгилаши mumкин, шу ном билан усул яратиш орқали. Кeling, мисол билан кўрамиз. Бизда куйидаги ота синф мавжуд бўлсин:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Кeling, синф-авлодда шу ном билан усул яратамиз:
<?php
class Student extends User {
public function setName($name) {
}
}
?>
Одатда, ота синф усулларини қайта белгилаш, шу усулнинг ишлашини ўзгартириш ёки тўлдириш учун керак бўлади. Кeling, бизнинг ҳолатимизда исм узунлигини текширишни қўшайлик:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Кeling, айнан қайта белгиланган усул чақирилишига ишонч ҳосил қилайлик. Бошлаш учун авлод синфнинг объектини яратамиз:
<?php
$student = new Student;
?>
Энди бизнинг усулимизни чақирамиз, унга тўғри қиймат ўтказсак:
<?php
$student->setName('john');
?>
Энди эса усулни чақириб, унга нотўғри қиймат ўтказамиз. Натижада чиқарилган истиснони кўрамиз:
<?php
$student->setName(''); // хатолик
?>
User синфида ёш
геттер ва сеттерини яратинг.
Employee синфида ёш
сеттерини қайта белгиланг ва унда
ёш 18 дан 65 гача
эканини текширинг.