პრივატული თვისებები მემკვიდრეობითობისას OOP-ში PHP-ში

პრივატული თვისებები არ გადაეცემა მემკვიდრეობით. მაგრამ შთამომავალს შეუძლია მათზე მანიპულირება მშობლის საჯარო მეთოდების მეშვეობით. პრაქტიკაში ვნახოთ. დავუშვათ, გვაქვს შემდეგი მშობელი კლასი პრივატული თვისებით და მისი გეთერით და სეთერით:

php<?php
  class User {
    private $name;
    
    public function setName($name) {
      $this->name = $name;
    }
    public function getName() {
      return $this->name;
    }
  }
?>

დავუშვათ, მშობლისაგან მემკვიდრეობით მიიღებს შემდეგმა შთამომავალმა:

php<?php
  class Student extends User {
    
  }
?>

შევქმნათ შთამომავლის ობიექტი:

php<?php
  $student = new Student;
?>

გამოვიყენოთ მშობლის მეთოდი, რათა ჩავწეროთ მისი პრივატული თვისება:

php<?php
  $student->setName('john');
?>

გამოვიყენოთ მშობლის მეთოდი, რათა წავიკითხოთ მისი პრივატული თვისება:

php<?php
  $name = $student->getName();
  echo $name;
?>
Задание 1

მოცემულია შემდეგი მშობელი კლასი:

php<?php
  class User {
    private $name;
    private $surn;
    
    public function setName($name) {
      $this->name = $name;
    }
    public function getName() {
      return $this->name;
    }
    
    public function setSurn($surn) {
      $this->surn = $surn;
    }
    public function getSurn() {
      return $this->surn;
    }
  }
?>

გააკეთეთ კლასი Employee, რომელიც მემკვიდრეობით მიიღებს ამ მშობლისგან.

Задание 2

შექმენით Employee კლასის ობიექტი და გამოიძახეთ მემკვიდრეობით მიღებული სეთერები და გეთერები.

Задание 3

Employee კლასში გააკეთეთ შემდეგი მეთოდი:

php<?php
  public function getFull() {
    return $this->name . ' ' . $this->surn;
  }
?>

დარწმუნდით, რომ მეთოდის კოდი გამოიწვევს შეცდომას.