Wito wa Mbinu Iliyobadilishwa Katika OOP katika PHP

Wakati wa kubadilisha mbinu, mtoto hupoteza ufikiaji wa mbinu iliyobadilishwa ya mzazi. Hata hivyo, bado inawezekana kupata ufikiaji kwayo. Hii inafanywa kwa kutumia neno kuu parent, ambacho kinaonyesha darasa la mzazi.

Tuangalie kwa mfano, ambapo tunaweza kuhitaji ufikiaji kwa mbinu ya mzazi. Tuchukulie tuna darasa la mzazi lifuatalo:

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

Tuchukulie katika darasa la mtoto tumebadilisha mbinu ya mzazi:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        $this->name = $name;
      } else {
        echo 'kosa la jina la mwanafunzi';
      }
    }
  }
?>

Inaweza kubainika kuwa katika mbinu iliyobadilishwa wakati sharti linapotimizwa kimsingi kinateketea msimbo wa mbinu ya mzazi. Hii inasababisha urudufishaji usiohitajika wa msimbo.

Inaweza kuepukwa, kama tukiwita mbinu ya mzazi. Hebu tufanye hivyo:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        parent::setName($name); // mbinu ya mzazi
      } else {
        echo 'kosa la jina la mwanafunzi';
      }
    }
  }
?>
Задание 1

Kuna msimbo ufuatao:

php<?php
  class User {
    private $age;
    
    public function setAge($age) {
      if ($age >= 0) {
        $this->age = $age;
      } else {
        echo 'unahitaji umri zaidi ya 0';
      }
    }
  }
  
  class Employee extends User {
    public function setAge($age) {
      if ($age <= 120) {
        if ($age >= 0) {
          $this->age = $age;
        } else {
          echo 'unahitaji umri zaidi ya 0';
        }
      } else {
        echo 'unahitaji umri chini ya 120';
      }
    }
  }
?>

Katika darasa Employee sahihisha kiweka-umri, ukitumia mbinu ya asili ya mzazi.