Overstyre foreldremetoder i OOP i PHP

En underklasse kan overstyre en foreldremetode ved å opprette en metode med samme navn. La oss se på et eksempel. La oss si at vi har følgende foreldreklasse:

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

La oss i underklassen opprette en metode med samme navn:

php<?php
  class Student extends User {
    public function setName($name) {
      
    }
  }
?>

Vanligvis er overstyring av metoder fra forelderen nødvendig for å endre eller supplere oppførselen til denne metoden. La oss i vårt tilfelle legge til en sjekk av navnelengden:

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

La oss forsikre oss om at det er nettopp den overstyrte metoden som kalles. La oss først opprette et objekt av underklassen:

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

La oss nå kalle metoden vår, og gi den en korrekt verdi:

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

Og la oss nå kalle metoden, og gi den en ukorrekt verdi. Som et resultat vil vi se en utløst unntak:

php<?php
  $student->setName(''); // feil
?>
Задание 1

I klassen User lag getter og setter for alder.

Задание 2

I klassen Employee overstyr alder-setteren og gjør en sjekk på at alderen er fra 18 til 65 år.