გადაფარული მეთოდის გამოძახება OOP-ში PHP-ში
გადაფარვისას მემკვიდრე კარგავს
წვდომას მშობელი კლასის გადაფარულ
მეთოდზე. მაგრამ, მასზე წვდომა მაინც
შესაძლებელია. ეს ხდება
parent საკვანძო სიტყვის გამოყენებით,
რომელიც მიუთითებს მშობელ კლასზე.
მოდით შევხედოთ მაგალითს, როდესაც შეიძლება დაგვჭირდეს წვდომა მშობელი კლასის მეთოდზე. დავუშვათ გვაქვს შემდეგი მშობელი კლასი:
<?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) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
შეიძლება შეამჩნიოთ, რომ გადაფარულ მეთოდში პირობის შესრულებისას ფაქტობრივად შესრულებულია მშობელი კლასის მეთოდის კოდი. შედეგად მივიღებთ არასაჭირო კოდის დუბლირებას.
მისგან თავის დაღწევა შესაძლებელია, თუ გამოვიძახებთ მშობელი კლასის მეთოდს. მოდით გავაკეთოთ ეს:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
parent::setName($name); // მშობელი კლასის მეთოდი
} else {
echo 'student name error';
}
}
}
?>
მოცემულია შემდეგი კოდი:
<?php
class User {
private $age;
public function setAge($age) {
if ($age >= 0) {
$this->age = $age;
} else {
echo 'need age more 0';
}
}
}
class Employee extends User {
public function setAge($age) {
if ($age <= 120) {
if ($age >= 0) {
$this->age = $age;
} else {
echo 'need age more 0';
}
} else {
echo 'need age less 120';
}
}
}
?>
Employee კლასში შეასწორეთ
ასაკის სეტერი, გამოიყენეთ
მშობელი კლასის ორიგინალური მეთოდი.