ООП В PHP

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

Курс

PHP: Абстракция с помощью данных

PRO

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

Курс

PHP: Введение в ООП

PRO

PHP — объектно-ориентированный язык программирования, использующий классовую модель организации кода. В этом курсе начинается знакомство с основными синтаксическими конструкциями и объясняется предназначение классов как абстракций данных. Рассматриваются инкапсуляция и сокрытие данных. Кроме этого, затрагиваются организационные моменты, связь классов с пространствами имён и стандарт автозагрузки PSR-4.

Курс

PHP: Объектно-ориентированный дизайн

PRO

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

Курс

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

PRO

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

Курс

PHP: Погружаясь в классы

PRO

Наследование – одна из самых сложных концепций в объектно-ориентированном программировании. Это не только новые синтаксические конструкции, но и другой способ структурировать код. Говоря о наследовании нужно понимать его применимость и ограничения. Уметь использовать его к месту и находить другие пути там, где оно делает код сложнее. Все это рассматривается в курсе. Дополнительно разбираются абстрактные классы, принцип подстановки Лисков, паттерн "шаблонный метод", финальные классы, трейты и многое другое.

Испытания

PHP: Введение в ООП
Генератор случайных чисел
Random.php Реализуйте генератор рандомных чисел, предст...
PHP: Введение в ООП
Круг
src\Circle.php Реализуйте класс Circle для описания кру...
PHP: Введение в ООП
Url
src\Url.php Реализуйте класс Url который описывает пере...
PHP: Введение в ООП
Генератор квадратов
src/Square.php Реализуйте класс Square для описания ква...
PHP: Введение в ООП
Поиск в двоичном дереве
src/Node.php Двоичное дерево поиска состоит из узлов, к...
PHP: Введение в ООП
Построение двоичного дерева
Двоичное дерево — иерархическая структура данных, в кот...
PHP: Введение в ООП
Агрегация в двоичном дереве
В данном испытании мы будем использовать двоичное дерев...
PHP: Введение в ООП
Сбалансированное двоичное дерево
Особенность структуры двоичного дерева даёт хороший при...
PHP: Объектно-ориентированный дизайн
Пьяница
Пьяница — карточная игра, в которой побеждает тот игрок...
PHP: Объектно-ориентированный дизайн
Ленивые коллекции
В этой задаче необходимо реализовать ленивую коллекцию....
PHP: Объектно-ориентированный дизайн
Диапазон дат
src/Dates.php Реализуйте функцию buildRange(), которая ...
PHP: Объектно-ориентированный дизайн
Объект как массив
В JavaScript, вместо ассоциативного массива, использует...
PHP: Полиморфизм
Сетевое соединение
HTTP – протокол без состояния, то есть после запроса по...
PHP: Абстракция с помощью данных
Обработка ссылок
src\Url.php Реализуйте абстракцию для работы с урлами. ...

Впечатления

Большое спасибо за данный курс! Определенно один из лучших на Hexlet. Если бы можно было выделять курс в "Избранное" - этот бы курс там точно был. После прохождения ощущение, что открыли глаза на столь важные вещи, которые вроде как бы и использовались до этого мной, но их суть куда то ускользала. Теперь все по полочкам. Спасибо.

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

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

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

P.S.: В этом упражнении TDD - это наше все!

Очень интересное задание. Спасибо за него. Еще бы парочку таких же, чтобы закрепить)) Сначала смотришь и ничего не понимаешь, что откуда брать. Читаешь как работают часы, читаешь первый тест, смотришь пример в уроке, реализуешь. Сначала еще так пишешь в основной класс через ифы по привычке, а потом думаешь надо же без ифов, смотришь как в уроке, пробуешь, получается и тут ("Блин а че так можно чтоли?"), а дальше по накатанной. Правда в итоге сравниваешь с учителем, а у него ваще все красиво. И с делением по модулю у учителя тоже классный оборот.