Ծնողի մեթոդների վերասահմանումը 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 {
    public function setName($name) {
      
    }
  }
?>

Որպես կանոն, ծնողի մեթոդների վերասահմանումը անհրաժեշտ է այդ մեթոդի վարքագիծը փոխելու կամ լրացնելու համար: Եկեք մեր դեպքում ավելացնենք անվան երկարության ստուգում.

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

Եկեք համոզվենք, որ կանչվում է հենց վերասահմանված մեթոդը: Սկզբում ստեղծենք ենթադասի օբյեկտ.

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

Այժմ կանչենք մեր մեթոդը՝ նրան փոխանցելով ճիշտ արժեք.

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

Այժմ կանչենք մեթոդը՝ փոխանցելով նրան սխալ արժեք: Արդյունքում կտեսնենք դուրս նետված բացառություն.

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

User դասում ստեղծեք tառքի և դրա արժեքը սահմանող մեթոդ տարիքի համար։

Задание 2

Employee դասում վերասահմանեք tարիքի համար դրա արժեքը սահմանող մեթոդը և դրա մեջ ստուգեք, որ տարիքը 18-ից 65 տարեկան է։