<learndojo />
← Все главы

Глава 4

Продвинутые возможности PHP

Константы классов, перечисления, backed enum, методы enum и абстрактные классы.

Константы классовПеречисленияСтатические методыКонтракт абстрактного классаВыбор абстрактного классаИнтерфейсы и контрактыПолиморфизм интерфейсовКомпозиция интерфейсовTraits и повторное использованиеКонфликты traitsКонтракт traitИсключенияMagic methods и делегированиеКлонирование и callbacksClosures и callable

Упражнения

Выбрать правильный код Closure и ссылка 1 баллов · easy → Собери защитный ответ Собери разрешение конфликта 2 баллов · normal → Запусти код Исправь __toString() 2 баллов · normal → Выбрать правильный код Что запрещает final method? 1 баллов · easy → Сопоставить понятия Один контракт, два формата 2 баллов · normal → Запусти код Создай first-class callable 2 баллов · normal → Запусти код Исправь порядок catch 2 баллов · normal → Запусти код Исправь closure-счётчик 2 баллов · normal → Выбрать правильный код Присваивание объекта 1 баллов · easy → Найти ошибку Найди ошибку в наследнике 2 баллов · normal → Дописать код Несколько интерфейсов 2 баллов · normal → Предсказать вывод Доступ к константе класса 2 баллов · normal → Запусти код Исправь callback 2 баллов · normal → Выбрать правильный код Поток try/catch/finally 1 баллов · easy → Запусти код Closure и накопление суммы 2 баллов · normal → Запусти код Arrow function и захват по значению 2 баллов · normal → Провести code review Интерфейс или абстрактный класс? 2 баллов · normal → Выбрать правильный код Для чего нужен __call()? 1 баллов · easy → Выбрать правильный код Error и Exception 1 баллов · easy → Запусти код Защити метод через final 2 баллов · normal → Найти ошибку Реализуй обязательный метод 2 баллов · normal → Исправить небезопасный код Проблема статических методов 2 баллов · normal → Выбрать правильный код Реализация интерфейса 1 баллов · easy → Запусти код Замени die() на исключение 2 баллов · normal → Найти ошибку Можно ли изменить константу? 2 баллов · normal → Предсказать вывод Сравнение вариантов enum 2 баллов · normal → Выбрать правильный код Что делает __set()? 1 баллов · easy → Выбрать правильный код clone и __clone() 1 баллов · easy → Выбрать правильный код Расширь интерфейс 1 баллов · easy → Запусти код Closure с порогом и накоплением 2 баллов · normal → Выбрать правильный код Для чего нужен finally? 1 баллов · easy → Запусти код Исправь __get() 2 баллов · normal → Предсказать вывод Предскажи метод trait 2 баллов · normal → Предсказать вывод Проверь интерфейс через instanceof 2 баллов · normal → Запусти код Настрой два formatter trait 2 баллов · normal → Выбрать правильный код Порядок catch 1 баллов · easy → Дописать код Разреши конфликт traits 2 баллов · normal → Запусти код Исправь deep copy 2 баллов · normal → Запусти код Реализуй требование trait 2 баллов · normal → Провести code review Тип параметра — интерфейс 2 баллов · normal → Запусти код Исправь делегирование __call() 2 баллов · normal → Выбрать правильный код Делегирование через __call() 1 баллов · easy → Найти ошибку Найди конфликт traits 2 баллов · normal → Запусти код Добавь собственные исключения 2 баллов · normal → Дописать код Объяви абстрактный класс 2 баллов · normal → Сопоставить понятия Безопасное восстановление enum 2 баллов · normal → Запусти код Исправь виртуальное свойство 2 баллов · normal → Дописать код Наследник без реализации 2 баллов · normal → Сопоставить понятия Общий контракт для разных классов 2 баллов · normal → Запусти код Callable к private-методу 2 баллов · normal → Выбрать правильный код Когда вызывается __destruct()? 1 баллов · easy → Запусти код Ограничь видимость метода trait 2 баллов · normal → Выбрать правильный код __toString() 1 баллов · easy → Провести code review Сделай контракт trait явным 2 баллов · normal → Сопоставить понятия Где хранить общий код? 2 баллов · normal → Запусти код Сделай настоящую копию 2 баллов · normal → Запусти код Сделай trait частью контракта 2 баллов · normal → Дописать код Подключи trait 2 баллов · normal → Выбрать правильный код Проблема shallow copy 1 баллов · easy → Выбрать правильный код Присваивание и изменение 1 баллов · easy → Запусти код Создай alias метода 2 баллов · normal → Запусти код Закрой файл через finally 2 баллов · normal → Дописать код Объяви интерфейс 2 баллов · normal → Запусти код Убери дублирование trait-ом 2 баллов · normal → Провести code review Когда достаточно интерфейса? 2 баллов · normal → Выбрать правильный код Зачем нужен __clone()? 1 баллов · easy → Предсказать вывод Что можно вызвать через интерфейс? 2 баллов · normal → Выбрать правильный код __isset() и ?? 1 баллов · easy → Запусти код Убери скрытое свойство из trait 2 баллов · normal → Запусти код Вынеси логирование в trait 2 баллов · normal → Выбрать правильный код Зачем разные Exception? 1 баллов · easy → Предсказать вывод Значение backed enum 2 баллов · normal → Выбрать правильный код Тип константы класса 1 баллов · easy → Дописать код Метод внутри enum 2 баллов · normal → Выбрать правильный код Что выведет __get()? 1 баллов · easy → Выбрать правильный код Shallow copy и Account 1 баллов · easy → Выбрать правильный код Выбери правильный enum 1 баллов · easy → Запусти код Исправь __set() 2 баллов · normal → Выбрать правильный код Кто обрабатывает ошибку? 1 баллов · easy → Найти ошибку Сохрани доступность метода 2 баллов · normal → Провести code review Когда выбрать абстрактный класс? 2 баллов · normal → Дописать код Восстановление backed enum 2 баллов · normal → Предсказать вывод Можно ли создать экземпляр? 2 баллов · normal → Найти ошибку Исправь подключение trait 2 баллов · normal → Выбрать правильный код Объяви обязательный метод 1 баллов · easy → Запусти код Исправь __destruct() 2 баллов · normal →