ООП В PHP

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

Курс

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

PRO

Программирование не ограничивается одними лишь вычислениями. Любая нетривиальная программа, моделирует внутри себя предметную область, для которой она писалась. Например, Хекслет внутри себя оперирует понятиями Курс, Проект, Ученик и другими. Они связаны между собой определенным образом и могут взаимодействовать. На профессиональном языке это называется Абстракция. В этом курсе мы познакомимся подробнее с тем, что из себя представляет абстракция, и как ее строить.

Курс

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

PRO

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

Курс

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

PRO

Проектирование кода в объектно-ориентированном стиле - целая история со множеством нюансов. В этом курсе мы рассмотрим базовые принципы дизайна ОО-кода и познакомимся с популярными библиотеками, реализованными в этом стиле.

Курс

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

PRO

Полиморфизм - пожалуй, главная отличительная черта современного ООП. В современных программных системах использующих ООП модель похожую на Java (PHP относится к таким языкам), полиморфизм возведён в абсолют. Код программ на этих языках часто строится вокруг контейнеров, которые по максимуму используют полиморфизм и связанные с ним понятия. Эта тема настолько глубокая, что разбирается на протяжении целого курса.

Курс

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

PRO

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

Испытания

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

Впечатления

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

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

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

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

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

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