Включено в курс
Чему вы научитесь
- Понимать разницу между разными видами полиморфизма и решаемые ими задачи
- Распознавать и применять шаблоны проектирования (Стратегия, Фабрика, Состояние, Декоратор, Нулл-объект и другие)
- Использовать различные виды диспетчеризации, чтобы уменьшать и упрощать код
- Управлять зависимостями, внедрять их с помощью DI-контейнера
Описание
На этом курсе вы познакомитесь с полиморфизмом на PHP. Вы узнаете о динамической диспетчеризации, полиморфизме подтипов и инверсии зависимостей. В итоге поймете, как значительно уменьшить количество условных конструкций и сделать код расширяемым. Знания из курса пригодятся, чтобы распознавать и применять шаблоны проектирования. Этот курс подойдет тем, кто уже хорошо знаком с языком PHP. Чтобы учиться было проще, стоит заранее изучить курсы: «Основы PHP», «PHP: Массивы», «PHP: Ассоциативные массивы», «PHP: Функции» и PHP: Введение в ООП.
Программа курса
-
3
Диспетчеризация по ключу (данные)
Научиться заменять условные конструкции на таблицу соответствия -
4
Диспетчеризация по ключу (функции)
Научиться делать диспетчеризацию используя функции -
5
Диспетчеризация по имени файла
Познакомиться с диспетчеризацией на основе файловой структуры -
7
Null Object Pattern
Рассмотреть практический пример использования полиморфизма в реальной жизни. -
8
Код, который убивает полиморфизм
Познакомиться с распространёнными ошибками, из-за которых теряется полиморфизм подтипов -
9
Инверсия зависимостей
Познакомиться с Принципом Инверсией Зависимостей и научиться соблюдать его используя Инъекцию Зависимостей -
10
Полиморфизм подтипов
Научиться использовать полиморфизм подтипов с интерфейсами -
11
Стратегия (Паттерн)
Научиться видеть места, где нужно использовать полиморфизм подтипов -
12
Динамическая диспетчеризация
Изучить механизм, благодаря которому работает полиморфизм -
13
Фабрика (Паттерн)
Познакомиться с распространённым способом создания объектов -
14
Шаблоны проектирования (Паттерны)
Познакомиться с понятием "шаблон проектирования" -
15
Объектная композиция
Научиться писать объектно-ориентированный код построенный на взаимодействии объектов -
16
Паттерн Состояние (State)
Рассмотреть несколько примеров систем и выявить общий паттерн. -
17
Управление зависимостями
Познакомиться с сервис-локатором и di-контейнером -
18
Дополнительные материалы
Статьи и видео, подобранные командой Хекслета. Помогут глубже погрузиться в тему курса
Формат обучения
Испытания
Это практические задания, которые мы советуем выполнить после завершения курса. Задания помогут вам получить дополнительный опыт в программировании и закрепить полученные навыки. Обычно мы рекомендуем выполнить 3-5 испытаний. Но если не получается, не отчаивайтесь. Просто вернитесь к ним позже
Отзывы

Взрыв эмоций)
Вчера вечером открыл упражнение, хмм, рекурсия... давненько этого не было придется наверное повозиться, повспоминать как там что... полчаса наверное отнимет...
В итоге два часа тупил в монитор, не понимая как же с этой "змеёй" управиться - хвост отрежешь, голова вырастает, и наоборот.
Гуглить и уж тем более пользоваться "подсказкой" принципиально не хотел.
А сегодня как-то за час всё сложилось. Используя лучшие наработки курса "Деревья", используя органично переплетенные ТРИ функции с несколькими рекурсивными вызовами, РЕШИЛ!! Почувствовал себя чуть ли не гением, очень горд сдобой, сохранил свой код в избранное.
И вот потом открываю решение учителя. В три раза короче и в миллион раз изящнее, ВООБЩЕ БЕЗ РЕКУРСИИ )))
И я бы не назвал при этом своё решение костыльным. Ну хотя конечно по сравнению с учительским так и есть, наверное.
Круто.

Я нашел отличительную черту hexlet от большинства других ресурсов в том, что здесь учат не тому - ЧТО такое полиморфизм, инкапсуляция и т.д, а тому - ЗАЧЕМ и КАК эти концепции применяются в реальном мире, оставляя за вами право давать этим терминам определения. Пройдя курс Полиморфизм за пару дней (не мог оторваться, как от Игры престолов), я понял об ООП больше, чем за несколько месяцев изучения и практики на других ресурсах. Браво!

Спасибо за этот курс - давно так башню не сносило:-) Очень полезные вещи узнала. Понравилась объемная практика! Обязательно - буду еще раз проходить.

Боже, паттерн Состояние самое прекрасное что я видел в своей жизни. Когда понимаешь суть работы таких "трафаретов", с которыми действительно не нужен ни один if
, то так и хочется закричать: "А что, так можно было??!!!1".
Пока что это для меня стоит на первом месте во всем PHP-курсе по полезности. Спасибо!

Задание огонь! Спустя 3 дня и после осознания, что "активация будильника != переход в режим bell ", увидела долгожданную надпись "status: finished → Тесты прошли!". Счастью нет придела.
P.S.: В этом упражнении TDD - это наше все!
