PHP, как и любой другой классовый язык, уделяет очень много внимания организации классов. Всё это делается ради возможности лучше переиспользовать код (в рамках классового подхода, без классов эти ухищрения не нужны) и допускать меньше ошибок.
С одной стороны это хорошо, но с другой, текущих возможностей настолько много, что одну и ту же задачу можно реализовать десятками способов. Количество комбинаций разных подходов порождает целые школы и направления по тому как надо писать код. Как часто нужно использовать наследование? Где применяются абстрактные классы? А анонимные? Зачем нужны трейты? Как совмещать подтипы и иерархии?
В этом курсе мы глубоко окунёмся в организацию классов, познакомимся с концепцией наследования. Научимся строить иерархии классов правильно, с учётом принципа подстановки Лисков. В конце концов узнаем о том, почему наследование почти всегда плохой способ организации кода (но популярный потому что легко сделать) и лучше предпочитать композицию наследованию.
Наследование тянет за собой много нового. Здесь появляются абстрактные классы, финальные классы, возможность переопределять поведение. Возникают шаблоны проектирования, специфичные только для наследования. Наследование влияет на то, как работает полиморфный код (но не необходимо для него). Все это требует отдельного рассмотрения.
В конце концов, мы познакомимся с действительно интересной концепцией — трейтами (их иногда называют миксинами). Трейты предлагают гораздо более жизнеспособный механизм расширения функциональности лишённый недостатков наследования.
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.