პრივატული მეთოდები მემკვიდრეობითობის დროს OOP-ში PHP-ში
პრივატული მეთოდები არ გადაეცემა მემკვიდრეობით. ეს სპეციალურად არის გაკეთებული, რათა არ დაირღვეს ინკაფსულაცია. მოდით შევხედოთ მაგალითს. დავუშვათ, გვაქვს შემდეგი მშობელი კლასი პრივატული მეთოდით:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->capeFirst($this->name);
}
private function capeFirst($str) {
return ucfirst($str);
}
}
?>
დავუშვათ, მშობელი კლასისგან მემკვიდრეობით მიიღებს შემდეგი კლასი:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
დავუშვათ, შვილობილი კლასი სურს გამოიყენოს მშობელის პრივატული მეთოდი. PHP ამის ნებას არ მისცემს და დააბრუნებს შეცდომას:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // იქნება შეცდომა
}
}
?>
სცადეთ კლასში Employee
გამოიყენოთ მშობელის პრივატული მეთოდი.