მშობელ კლასის მეთოდების გადაწერა OOP-ში 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 წლამდეა.