Включено в курс
Чему вы научитесь
- Понимать разницу между разными видами полиморфизма и решаемые ими задачи
- Распознавать и применять шаблоны проектирования (Стратегия, Фабрика, Состояние, Декоратор, Нулл-объект и другие)
- Использовать различные виды диспетчеризации, чтобы уменьшать и упрощать код
- Управлять зависимостями, внедрять их с помощью DI-контейнера
Описание
На этом курсе вы познакомитесь с полиморфизмом на PHP. Вы узнаете о динамической диспетчеризации, полиморфизме подтипов и инверсии зависимостей. В итоге поймете, как значительно уменьшить количество условных конструкций и сделать код расширяемым. Знания из курса пригодятся, чтобы распознавать и применять шаблоны проектирования.
Теория и практика в курсе рассчитаны на тех, кто уже хорошо знаком с языком PHP. Если у вас возникнут сложности, рекомендуем пройти эти курсы:
Программа курса
-
3
Диспетчеризация по ключу (данные)
Учимся заменять условные конструкции на таблицу соответствия -
4
Диспетчеризация по ключу (функции)
Учимся делать диспетчеризацию, используя функции -
5
Диспетчеризация по имени файла
Знакомимся с диспетчеризацией на основе файловой структурыупражнение
-
7
Null Object Pattern
Рассматриваем практический пример использования полиморфизма в реальной жизни -
8
Код, который убивает полиморфизм
Знакомимся с распространенными ошибками, из-за которых теряется полиморфизм подтипов -
9
Инверсия зависимостей
Знакомимся с принципом инверсии зависимостей и учимся соблюдать его, используя инъекцию зависимостей -
10
Полиморфизм подтипов
Учимся использовать полиморфизм подтипов с интерфейсами -
11
Стратегия (Паттерн)
Учимся видеть места, где нужно использовать полиморфизм подтипов -
12
Динамическая диспетчеризация
Изучаем механизм, благодаря которому работает полиморфизм -
13
Фабрика (Паттерн)
Знакомимся с распространенным способом создания объектов -
14
Шаблоны проектирования (Паттерны)
Знакомимся с понятием «шаблон проектирования» -
15
Объектная композиция
Учимся писать объектно-ориентированный код, построенный на взаимодействии объектов -
16
Паттерн Состояние (State)
Рассматриваем несколько примеров систем и выявляем общий паттерн -
18
Дополнительные материалы
Статьи и видео, подобранные командой Хекслета. Помогут глубже погрузиться в тему курса
Формат обучения
Испытания
Это практические задания, которые мы советуем выполнить после завершения курса. Задания помогут вам получить дополнительный опыт в программировании и закрепить полученные навыки. Обычно мы рекомендуем выполнить 3-5 испытаний. Но если не получается, не отчаивайтесь. Просто вернитесь к ним позже
Отзывы
Взрыв эмоций)
Вчера вечером открыл упражнение, хмм, рекурсия... давненько этого не было придется наверное повозиться, повспоминать как там что... полчаса наверное отнимет...
В итоге два часа тупил в монитор, не понимая как же с этой "змеёй" управиться - хвост отрежешь, голова вырастает, и наоборот.
Гуглить и уж тем более пользоваться "подсказкой" принципиально не хотел.
А сегодня как-то за час всё сложилось. Используя лучшие наработки курса "Деревья", используя органично переплетенные ТРИ функции с несколькими рекурсивными вызовами, РЕШИЛ!! Почувствовал себя чуть ли не гением, очень горд сдобой, сохранил свой код в избранное.
И вот потом открываю решение учителя. В три раза короче и в миллион раз изящнее, ВООБЩЕ БЕЗ РЕКУРСИИ )))
И я бы не назвал при этом своё решение костыльным. Ну хотя конечно по сравнению с учительским так и есть, наверное.
Круто.
Я нашел отличительную черту hexlet от большинства других ресурсов в том, что здесь учат не тому - ЧТО такое полиморфизм, инкапсуляция и т.д, а тому - ЗАЧЕМ и КАК эти концепции применяются в реальном мире, оставляя за вами право давать этим терминам определения. Пройдя курс Полиморфизм за пару дней (не мог оторваться, как от Игры престолов), я понял об ООП больше, чем за несколько месяцев изучения и практики на других ресурсах. Браво!
Спасибо за этот курс - давно так башню не сносило:-) Очень полезные вещи узнала. Понравилась объемная практика! Обязательно - буду еще раз проходить.
Боже, паттерн Состояние самое прекрасное что я видел в своей жизни. Когда понимаешь суть работы таких "трафаретов", с которыми действительно не нужен ни один if
, то так и хочется закричать: "А что, так можно было??!!!1".
Пока что это для меня стоит на первом месте во всем PHP-курсе по полезности. Спасибо!
Задание огонь! Спустя 3 дня и после осознания, что "активация будильника != переход в режим bell ", увидела долгожданную надпись "status: finished → Тесты прошли!". Счастью нет придела.
P.S.: В этом упражнении TDD - это наше все!