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