ООП В 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 Реализуйте абстракцию для работы с урлами. ...

Впечатления

Спасибо, курс отличный!

Отдельное спасибо за Николая Рыжикова и Рича Хикки. Оба крутые дядьки.

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

Спасибо, классное задание и библиотека Collection тоже супер. Приятно, что решение почти такое же, как и учительское )))

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

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

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