Общее описание
Книга представляет собой глубокое и системное руководство по построению поддерживаемой, масштабируемой и тестируемой архитектуры PHP-приложений на примере Laravel. Автор начинает с разбора типичных архитектурных и проектных ошибок, которые чаще всего возникают в реальных проектах: нарушения принципа единственной ответственности, чрезмерное использование CRUD-мышления, злоупотребление «магией» фреймворка и стремление к псевдобыстрой разработке в ущерб качеству кода.
Далее книга последовательно погружает читателя в основы правильной объектно-ориентированной архитектуры: внедрение зависимостей, осмысленное использование наследования, интерфейсов, трейтов и отказ от статических методов там, где они мешают расширяемости и тестированию. Большое внимание уделяется практическим примерам и рефакторингу существующего кода, а также инструментам, облегчающим работу разработчика.
Значительная часть книги посвящена слою приложения, обработке ошибок, валидации данных и построению устойчивой системы исключений. Автор чётко разделяет ответственности между слоями, показывая, как избежать «размазывания» логики по контроллерам и моделям. Отдельно рассматриваются события, очереди, транзакции и их роль в построении надёжных бизнес-процессов.
Во второй половине книги внимание смещается к более сложным архитектурным подходам: unit-тестированию, доменному слою, CQRS и Event Sourcing. Эти главы дают целостное представление о том, как проектировать сложные системы, где бизнес-логика становится центральным элементом, а инфраструктура — вторичной. Книга не является лёгким введением и предполагает опыт коммерческой разработки, но при этом даёт цельную картину современного архитектурного мышления в PHP-экосистеме.
Мнение
Неоднозначная книга, которая вызвала самые смешанные чувства. С одной стороны, ООП, которое предлагал автор в этой книге, выглядит элегантным, легко масштабируемым и хорошо тестируемым. С другой же стороны, после прочтения таких книг хочется напрочь перестать писать на ООП и полностью перейти в функциональное программирование.