Valideyn metodlarinin OOP-də PHP-də yenidən təyin edilməsi
Alt sinif, eyni adlı metod yaradaraq valideyn metodunu yenidən təyin edə bilər. Nümunəyə baxaq. Tutaq ki, bizim aşağıdakı valideyn sinifimiz var:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Gəlin alt sinifdə eyniadlı metod yaradaq:
<?php
class Student extends User {
public function setName($name) {
}
}
?>
Bir qayda olaraq, valideyn metodlarının yenidən təyin edilməsi, bu metodun davranışını dəyişdirmək və ya əlavə etmək üçün lazımdır. Gəlin bizim vəziyyətimizdə adın uzunluğunu yoxlama əlavə edək:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Gəlin əmin olaq ki, dəqiq yenidən təyin edilmiş metod çağırılır. Əvvəlcə alt sinifin obyektini yaradaq:
<?php
$student = new Student;
?>
İndi metodumuzu çağıraq, ona uyğun dəyər ötürərək:
<?php
$student->setName('john');
?>
İndi isə metodu, ona uyğun olmayan dəyər ötürərək çağıraq. Nəticədə yaranan istisnanı görəcəyik:
<?php
$student->setName(''); // xəta
?>
User sinfindində
yaş üçün getter və setter edin.
Employee sinfindində yaş setterını
yenidən təyin edin və onunda yaşın
18 ilə 65 arasında olduğunu
yoxlayın.