Лекция
Привет, сегодня поговорим про полиморфизм классов в php, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое полиморфизм классов в php , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend) .
Полиморфизм (многоформенность) является следствием идеи наследования. В общих словах, полиморфность класса — это свойство базового класса использовать функции производных классов, даже если на момент определения еще неизвестно, какой именно класс будет включать его в качестве базового и, тем самым, становиться от него производным.
Рассмотрим свойство полиморфности классов на основе следующего примера:
<?php
class A {
// Выводит, функция какого класса была вызвана
function Test() { echo "Test from A\n"; }
// Тестовая функция — просто переадресует на Test()
function Call() { Test(); }
}
class B extends A {
// Функция Test() для класса B
function Test() { echo "Test from B\n"; }
}
$a=new A();
$b=new B();
?>
Используем следующие следующие команды:
$a->Call(); // выводит "Test from A"
$b->Test(); // выводит "Test from B"
$b->Call(); // Внимание! Выводит "Test from B"!
Обратите внимание на последнюю строчку: вопреки ожиданиям, вызывается не функция Test() из класса A, а функция из класса B! Складывается впечатление, что Test() из B просто переопределила функцию Test() из A. Об этом говорит сайт https://intellect.icu . Так оно на самом деле и есть. Функция, переопределяемая в производном классе, называется виртуальной.
А вот еще один практический пример, показывающий свойство класса - полиморфизм:
<?php
class Base {
function funct() {
echo "<h2>Функция базового класса</h2>";
}
function base_funct() {
$this->funct();
}
}
class Derivative extends Base {
function funct() {
echo "<h3>Функция производного класса</h3>";
}
}
$b = new Base();
$d = new Derivative();
$b->base_funct();
$d->funct();
$d->base_funct();
// Скрипт выводит:
// Функция базового класса
// Функция производного класса
// Функция производного класса
?>
В рассмотренном примере функция base_funct() класса Base была перезаписана одноименной функцией классаDerivative.
Надеюсь, эта статья про полиморфизм классов в php, была вам полезна, счастья и удачи в ваших начинаниях! Надеюсь, что теперь ты понял что такое полиморфизм классов в php и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)
Из статьи мы узнали кратко, но содержательно про полиморфизм классов в php
Комментарии
Оставить комментарий
Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)
Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)