Что такое полиморфизм в php

Что такое полиморфизм в php

В этом разделе перечислены все уроки без разделения по рубрикам.

Выбирайте тот урок, который интересует Вас больше всего на данный момент. К каждому уроку Вы можете оставить свой комментарий, а также проголосовать.

Как выбрать хороший хостинг для своего сайта?

Выбрать хороший хостинг для своего сайта достаточно сложная задача. Особенно сейчас, когда на рынке услуг хостинга действует несколько сотен игроков с очень привлекательными предложениями. Хорошим вариантом является лидер рейтинга Хостинг Ниндзя — Макхост.

Проект готов, Все проверено на локальном сервере OpenServer и можно переносить сайт на хостинг. Вот только какую компанию выбрать? Предлагаю рассмотреть хостинг fornex.com. Отличное место для твоего проекта с перспективами бурного роста.

mini

Разработка веб-сайтов с помощью онлайн платформы Wrike

wordpress joomla

Этот урок скорее всего будет психологическим, т.к. многие люди работают с WordPress и одновременно с Joomla, но не могут решится каким CMS пользоваться.

wp

Про шаблоны WordPress

После установки и настройки движка нам нужно поработать с дизайном нашего сайта. Это довольно долгая тема, но мы постараемся рассказать всё кратко и ясно.

thumbnail

Анимация набора текста на jQuery

Сегодня мы бы хотели вам рассказать о библиотеке TypeIt — бесплатном jQuery плагине. С её помощью можно имитировать набор текста. Если всё настроить правильно, то можно добиться очень реалистичного эффекта.

wp

Самые первые настройки после установки движка WordPress

Сегодня мы вам расскажем какие первые настройки нужно сделать после установки движка WordPress. Этот урок будет очень полезен для новичков.

Источник

Полиморфизм в PHP

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

Однако перед этим давайте вспомним конструкцию instanceof. Она позволяет узнать, является ли объект экземпляром какого-то класса, либо что он реализует какой-либо интерфейс. Возвращает true или false.

Давайте создадим ещё один класс, который будет наследником класса A, и выполним ту же проверку для объекта этого класса.

При этом если проверить объект дочернего класса, является ли он объектом родительского класса, то мы получим true.

Это правило работает только в одну сторону, объекты родительского класса не будут являться экземплярами дочернего.

Согласитесь, это вполне логично.

Таким образом объекты дочерних классов будут проходить проверку на то, что они являются экземплярами родительских классов.

Как мы помним, методы объектов родительских классов у нас доступны и в дочерних – они наследуются. Соответственно мы можем быть уверены, что эти же методы есть и у дочерних объектов. Конкретно в нашем примере – у объектов класса B будет метод sayHello(), унаследованный от A.

Или в примере с интерфейсами из прошлого урока – мы определили, что объекты, реализовавшие какой-то интерфейс обязательно будут иметь метод с определённым набором параметров. То есть мы можем рассчитывать на то, что этот метод у объекта гарантированно есть и мы можем его вызвать.

Благодаря этому свойству объектов мы можем ожидать от них какого-то определенного поведения, если они являются объектами какого-то класса или реализуют какой-то интерфейс.

Это свойство, благодаря которому мы можем зависеть не от конкретной реализации (проще говоря конкретного класса), а от абстракции (интерфейса), и есть – полиморфизм.

Да-да, в примере про вычисление площадей фигур мы уже сталкивались с полиморфизмом! В тот момент, когда мы проверяли, имеется ли у объекта интерфейс для вычисления площади, мы работали с проявлением полиморфизма.

Переопределение методов

Как мы уже сказали, в дочерних объектах доступны методы объектов родительского класса.

Однако, мы можем переопределить этот метод в классе B. Для этого мы описываем метод с таким же названием и описываем в нём свою логику:

Мы также можем вызвать родительский метод в дочернем при помощи слова parent и двойного двоеточия.

Мы вызвали родительский метод, и дополнили его функционал. Так часто приходится делать в реальных проектах. Буквально через пару уроков вы столкнетесь с более понятными примерами того, для чего всё это нужно. Но пока что мы должны изучить базу на немного искусственных примерах. К сожалению, придумать что-то более интересное я не смог.

И ещё один примерчик, тоже искуственный.

Как думаете, что выведет этот код?

На этом с полиморфизмом пока всё, если что-то непонятно – пишите в комментах.

Источник

Понимание и применение полиморфизма в PHP

В объектно-ориентированном программировании полиморфизм является мощным и фундаментальным инструментом. Его можно использовать для создания более органичного потока в вашем приложении. Этот урок опишет общую концепцию полиморфизма и как его можно легко развернуть в PHP.

Что такое полиморфизм?

Полиморфизм — это длинное слово для очень простого понятия.

Полиморфизм описывает шаблон в объектно-ориентированном программировании, в котором классы имеют различную функциональность, совместно используя общий интерфейс.

Прелесть полиморфизма в том, что коду, работающему с разными классами, не нужно знать, какой класс он использует, поскольку все они используются одинаково.

Реальная аналогия полиморфизма — это кнопка. Все знают, как использовать кнопку: вы просто нажимаете на нее. Однако то, что кнопка «делает», зависит от того, с чем она связана, и от контекста, в котором она используется, но результат не влияет на то, как она используется. Если ваш босс говорит вам нажать кнопку, у вас уже есть вся информация, необходимая для выполнения задачи.

В мире программирования полиморфизм используется, чтобы сделать приложения более модульными и расширяемыми. Вместо беспорядочных условных выражений, описывающих различные варианты действий, вы создаете взаимозаменяемые объекты, которые выбираете в зависимости от ваших потребностей. Это основная цель полиморфизма.

Интерфейсы

Интерфейс

Интерфейс похож на класс за исключением того, что он не может содержать код. Интерфейс может определять имена методов и аргументы, но не содержимое методов. Любые классы, реализующие интерфейс, должны реализовывать все методы, определенные интерфейсом. Класс может реализовывать несколько интерфейсов.

Интерфейс объявляется с использованием ключевого слова interface :

Источник

Правильно понять полиморфизм

Всем привет! Помогите понять полиморфизм правильно. Так как примеров в Интернете много и все они отличаются друг от друга.

Как я его понимаю. Это когда свойство базового класса может использовать методы производных классов.

Часто встречаю в Интернет два примера полиморфизма

1 ответ 1

Стоит начать с того, что полиморфизм бывает разный.

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

При этом, в некоторых ООП языках используется т.н. «утиная типизация». Она же неявная типизация. Это когда клиентский код ожидает, что у используемого им объекта определен некоторый метод. Это позволяет использовать полиморфизм для обработки объектов, которые даже не обязательно входят в иерархию наследования.

Например, если я напишу функцию:

Это называется сигнатурным полиморфизмом. Такой подход широко распространен в Ruby, в PHP я бы не рекоммендовал его использовать.

Функция реализованная для произвольного типа данных также будет примером полиморфизма (параметрического). Например:

Что неправильно в вашем текущем понимании: вы зацикленны на отношениях базового и производных классов. Полиморфизм не об этом. Он о вызывающем (клиентском) коде и вызываемом, а также об их динамическом соответствии.

Источник

Моя дача
Adblock
detector