Наследование в PHP: Использование extends и parent

Наследование в PHP: Использование extends и parent

05.04.2023
153
В PHP наследование позволяет избежать дублирования кода и повторного использования уже написанного кода и реализуется с помощью extends и parent.

extends

extends используется для создания нового класса на основе уже существующего класса. Новый класс наследует все свойства и методы родительского класса. Например, если у нас есть класс Person с методом getName(), мы можем создать новый класс Employee, который будет наследовать метод getName() из класса Person:

class Person {
  protected $name;

  public function getName() {
    return $this->name; // возвращает имя человека
  }
}

class Employee extends Person {
  protected $salary;

  public function getSalary() {
    return $this->salary; // возвращает зарплату сотрудника
  }
}

В этом примере класс Employee наследует свойство $name и метод getName() из класса Person.

parent

parent используется для обращения к родительскому классу из дочернего класса. Это позволяет переопределить методы родительского класса или вызвать родительский метод в дочернем классе. Например, если у нас есть класс Person с методом getName(), мы можем переопределить этот метод в классе Employee и добавить к нему дополнительный функционал:

class Person {
  protected $name;

  public function getName() {
    return $this->name;
  }
}

class Employee extends Person {
  protected $salary;

  public function getName() {
    return parent::getName() . ' (Employee)'; // возвращает имя сотрудника
  }

  public function getSalary() {
    return $this->salary; // возвращает зарплату сотрудника
  }
}

В этом примере метод getName() класса Employee переопределяет метод getName() класса Person, но также добавляет к имени дополнительную информацию о том, что это сотрудник.

Заключение

Использование наследования в PHP с помощью ключевых слов extends и parent позволяет создавать более эффективный и модульный код. Оно также позволяет избежать дублирования кода и повторного использования уже написанного кода. При использовании наследования необходимо следить за тем, чтобы не было циклических зависимостей между классами и чтобы не было переопределения слишком многих методов и свойств, что может привести к сложностям в поддержке кода.