PHP OOP-da kakylan edilen metoda çagyryş

Kakylama edilende, nesil degişen we kakylan edilen metodo giremez. Emma, şonda hem ona girmek mümkin. Bu parent açary sözü bilen amala aşyrylýar, onyň üsti bilen ene-atanyň klasyna görkezilýär.

Nusaýa seredeliň, nädip ene-atanyň metoduna girmek zerur bolup biler. Aşakdaky ýaly ene-atanyň klassy bar diýeliň:

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

Diýeliň nesil degişen klasda ene-atanyň metoduny kakyladyk:

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

Kakylan edilen metodda şert ýerine ýetirilende esasan ene-atanyň metodynyň kody ýerine ýetirilýändigini görüp bolýar. Gereksiz kodyň dublikasiýasy bolup durýar.

Eger ene-atanyň metodyny çağırsak, bu dublikasiýadan gutulyp bileris. Geliň muny edeliň:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        parent::setName($name); // ene-atanyň metodu
      } else {
        echo 'student name error';
      }
    }
  }
?>
Задание 1

Aşakdaky kod berlen:

php<?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 klasynda ýaş setterini düzediň we ene-atanyň orignal metodyny ulanyp ýönekeýleşdiriň.