ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Наследование в PHP

Что такое: PHP

К трем основным функциям объектно-ориентированного программирования относятся инкапсуляция, наследование и полиморфизм. При программировании вам может потребоваться использовать определенный код несколько раз, а использование наследования сокращает повторение перезаписи кода вручную за счет повторного использования кода. Наследование – это метод создания нового класса путем наследования базового класса. Объект нового класса сможет получить доступ ко всем членам класса нового класса, а также к базовому классу посредством наследования. Таким образом, один и тот же код можно использовать многократно, написав его только один раз. PHP использует расширить ключевое слово для наследования. В этом руководстве показано, как реализовать наследование с помощью сценария PHP.

 

Синтаксис наследования

Синтаксис наследования показан ниже.

Class newClass extends oldClass
{
...
}

 

Здесь newClass называется дочерним, производным или подклассом; а oldClass называется родительским, базовым или суперклассом. В следующей части этой статьи показаны некоторые примеры использования наследования в PHP.

 

Пример 1: простое использование наследования

Следующий сценарий показывает простое использование наследования в сценарии PHP. В сценарии Employee – это родительский класс, содержащий две переменные класса, а метод setData() используется для инициализации переменных класса. Исполнительный класс дочерний класс, который наследуется от класса Employee, используя расширения ключевых слов. Он содержит одну переменную класса и метод с именем showDetails() для печати переменных класса родительского и дочернего классов. После создания объекта дочернего класса методы родительского и дочернего классов будут вызываться с использованием объекта дочернего класса.

<?php
//Родительский класс
class Employee{//Переменные родительского класса
public $name;
public $department;//Инициализация базовых данных
public function setData()
{
$this->name = "Max Destroyer";
$this->department = "HR";
}
}//Дочерний класс
class Executive extends Employee{

//Переменная дочернего класса
public $designation = "Marketing Executive";

//Печать сведений о сотруднике
public function showDetails()
{
if($this->name != "" && $this->designation != "" && $this->department != "")
{
echo "<b>Сведения о сотруднике: </b><br/>";
echo "Имя: ".$this->name."<br/>";
echo "Назначение: ".$this->designation."<br/>";
echo "Отдел: ".$this->department."<br/>";
}
}
}

//Создать объект Дочерний класс
$objEmp=new Executive();
//Вызвать метод Родительского класса
$objEmp->setData();
//Вызвать метод Дочернего класса
$objEmp->showDetails();

?>

Результат

Следующий вывод появится после запуска скрипта. Здесь имя сотрудника и значения отдела печатаются из родительского класса, а значение назначения сотрудника печатается из дочернего класса.

 

Пример 2: наследование с переопределением метода

Переопределение метода происходит, когда метод с тем же именем объявлен как в родительском, так и в дочернем классе. Следующий сценарий демонстрирует наследование с переопределением метода с помощью сценария PHP. Здесь метод showDetails() объявлен как в родительском, так и в дочернем классах. Объект родительского класса получит доступ к методу showDetails() родительского класса, а объект дочернего класса получит доступ к методу showDetails() дочернего класса.

<?php
//Родительский класс
class Employee{//Переменные родительского класса
public $name;
public $department;//Инициализация данных
function __construct()
{
$this->name = "Andrey Ex";
$this->department = "Sales";
}
//Печать сведений о сотруднике
public function showDetails()
{
echo "<b>Сведения о сотруднике:[Из родительского класса] </b><br/>";
echo "Имя: ".$this->name."<br/>";
echo "Отдел: ".$this->department."<br/><br/>";
}
}//Дочерний класс
class Executive extends Employee{

//Переменная дочернего класса
public $designation = "Sales Executive";

//Печать сведений о сотруднике
public function showDetails()
{
echo "<b>Сведения о сотруднике:[Из Дочернего класса] </b><br/>";
echo "Имя: ".$this->name."<br/>";
echo "Обозначение: ".$this->designation."<br/>";
echo "Отдел: ".$this->department."<br/>";
}
}

//Создать объект Родительского класса
$objEmployee=new Employee();
//Вызвать метод Родительского класса
$objEmployee->showDetails();

//Создать объект Дочернего класса
$objExecutive=new Executive();
//Вызвать метод Дочернего класса
$objExecutive->showDetails();

?>

Результат

Следующий вывод появится после запуска скрипта. Когда метод showDetails() вызывается с объектом родительского класса, он показывает выходные данные родительского класса. Когда метод showDetails() вызывается с объектом дочернего класса, он показывает вывод дочернего класса.

 

Пример 3: вызов родительского конструктора внутри дочернего конструктора

Когда и родительский, и дочерний классы содержат метод конструктора, дочерний класс может вызывать конструктор родительского класса. В следующем сценарии показано, как вызвать конструктор родительского класса из конструктора дочернего класса. Оператор parent :: __ construct () используется для вызова родительского конструктора.

<?php
//Родительский класс
class Employee{//Переменные Родительского класса
public $name;
public $department;//Инициализация данных
function __construct($name,$dept)
{
$this->name = $name;
$this->department = $dept;
}
}//Дочерний класс
class Executive extends Employee{

//Переменные Дочернего класса
public $designation;
public $salary;

//Инициализация данных
function __construct($name,$department,$designation,$salary)
{
//Вызвать объект Родительского класса
parent:: __construct($name,$department);
$this->designation = $designation;
$this->salary = $salary;
}

//Печать сведений о сотруднике
public function showDetails()
{
echo "<b>Сведения о сотруднике:</b><br/>";
echo "Имя: ".$this->name."<br/>";
echo "Назначение: ".$this->designation."<br/>";
echo "Отдел: ".$this->department."<br/>";
echo "Зарплата: $".$this->salary."<br/>";
}
}

//Создать объект Дочернего класса
$objExecutive=new Executive('Andrey Ex','Marketing','Marketing Executive',78000);
//Вызвать метод Дочернего класса
$objExecutive->showDetails();

?>

Результат

Следующий вывод появится после запуска скрипта. Здесь имя сотрудника и отдел инициализируются родительским конструктором, а назначение и зарплата сотрудника инициализируются дочерним конструктором.

 

Пример 4: Реализация иерархического наследования

Следующий сценарий показывает, как реализовать иерархическое наследование в PHP. Здесь class2 создается путем наследования class1, а class3 создается путем наследования class2. В этом примере три метода определены в трех классах. Объект class3 создается для вызова методов всех классов.

<?php
//Родительский класс
class class1{function showMethod1()
{
echo "<font color='red' size='5px'>Это Родительский класс</font><br/>";
}
}//Дочерний класс
class class2 extends class1{function showMethod2()
{
echo "<font color='green' size='4px'>Это Дочерний класс</font><br/>";
}
}

//Большой Дочерний класс
class class3 extends class2{

function showMethod3()
{
echo "<font color='blue' size='2px'>Это большой Дочерний класс</font>";
}
}

$object = new class3();

$object->showMethod1();
$object->showMethod2();
$object->showMethod3();
?>

Результат

Следующий вывод появится после запуска скрипта. Здесь первая строка текста появилась из class1, вторая строка текста появилась из class2, а третья строка текста появилась из class3.

 

Вывод

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

Exit mobile version