PHP: Полиморфизм
Теория: Диспетчеризация по ключу (функции)
Диспетчеризация по ключу ассоциативного массива мощнее чем кажется на первый взгляд. Далеко не всегда достаточно выбирать разные данные, иногда приходится выполнять другой код.
Предположим что нам надо сформировать массив с фамилиями наших пользователей. Главное условие – для девушек берётся девичья фамилия.
Реализуем эту задачу, используя старый добрый if:
Теперь решим эту задачу с помощью диспетчеризации по ключам объекта, но в отличие от предыдущего урока, в значениях у нас будут функции:
Кода стало немного больше, но хочу подчеркнуть, что во многом "виноват" сам PHP. У него очень многословный синтаксис определения анонимных функций. Тот же код в JavaScript, будет практически идентичен по размерам первоначальному варианту.
В некоторых ситуациях такой вариант решения задачи лучше. В нём явно прослеживаются зависимости, особенно если их становится много. Кроме того, конфигурация данными позволяет вынести их в другое место и расширять поведение без переписывания кода, который использует эти данные.
Ещё один пример – парсинг данных в зависимости от их типа:
.png)

