Буквально месяц тому назад вышла книга: "PHP 8 Programming Tips, Tricks and Best Practices" от Дуг Бирера (Doug Bierer). В этой книге автор делает обзор php 8.0, объясняет его нововведения и описывает потенциальные ошибки перехода со старых версий на php 8.0.
В этом обзоре я кратко пройдусь по содержании книги и выскажу свое мнение об плюсах и минусах книги, а так же оставлю рекомендации для кого подойдет эта книга.
Об авторе
Дуг Бирер - владелец и СТО unlikelysource.com, которая занимается разработкой коммерческих сайтов, выпуском книг по php/MongoDB/MySQL, а также проведению тренингов для разработчиков и компаний. На счету Дуга несколько книг php и mongoDB. Также он активно сотрудничает с O'Reilly Media в качестве автора видеокурсов. Другими словами, Дуг - профессиональный автор материалов по обучению программированию, и это действительно видно по его книгам.
Кратко о сути книги
По своей сути книга является самой большой и детальной статьей по нововведениях в PHP 8.0 по сравнению с PHP 7.4. Вот такая классическая статья, как публикуют на хабре после релиза новой версии языка, только раз в 100 больше и детальней.
Обзор содержания книги
В этой книге автор очень детально рассказывает, с объяснениями, почему было сделано то или иное изменение в PHP 8.0 по сравнению с прошлыми версиями. Объясняет, как нужно переводить кодовую базу своего проекта на PHP 8.0, описывает, что нужно делать в случае возникновения ошибок несовместимости. А так же дает рекомендации, как юзать фишки PHP 8.0, чтобы улучшить перфоманс вашего приложения.
Что вы узнаете
Получите полное представление о новых объектно-ориентированных функциях PHP 8.
Откройте для себя новые усовершенствования процедурного программирования PHP 8.
Понять улучшения в обработке ошибок в PHP 8
Выявление потенциальных проблем с обратной совместимостью.
Избегайте ловушек из-за изменений в расширениях PHP
Узнайте, какие функции устарели и / или удалены в PHP 8.
Ознакомьтесь с лучшими практиками программирования, применяемыми в PHP 8.
Из интересного, автор приводит достаточно много схем и иллюстрацией, где показывает изменения, которые случились в новой версии PHP. Это помогает воспринимать.
Плюсы книги:
Хорошие примеры в коде по использованию фич php 8.0;
Автор бережно приводит ссылки на информацию, если читатель хочет углубиться в теме и посмотреть официальный сайт php;
Есть решения на популярные проблемы с новыми фичами;
Есть интересный пример разработки экстеншена для php через FFI;
Затрагивает проблему перевода кодовой базы на новую версию, включая обзор статических анализаторов кода;
Дает сравнение работы JIT в PHP с PyPI (из Python) и приводит аргументы, почему в PHP сделано лучше;
Достаточно хороший обзор асинхрона в PHP 8.0 на базе ReactPHP и Swoole и Файберов из PHP 8.1
Минусы книги:
Огромный филлер в виде практик по работе с Docker;
Это все еще книга, которую фактически можно ужать в небольшую обзорную статью на Хабре;
Местами информация уж слишком детальная и по сути бесполезная, ибо столкнется с теми проблемами, что решает автор, фактически никто.
Итоговое мнение
Перед началом чтения книги мне даже стало интересно, как автор сможет растянуть небольшую статью с обзором новых фич в PHP 8.0 на книгу в 500 страниц. И самое удивительное, у него это получилось сделать, причем сделал он это достаточно хорошо и элегантно. При чтении не проседает темп и не возникает вопросов, что эта информация тут делает. Все лаконично и по делу.
Глубина анализа нововведений в PHP 8.0 поистине эпичная. Автор описывает, как из-за изменений в php 8.0, может начать взрываться инфраструктурный код, экстеншены php, логеры ошибок и тулзы по работе с php (в частности XDebug). То, насколько глубоко копает автор - приятно читать и понимать, что кто-то может настолько заморачиваться.
Однако, я считаю, что в этой книге мало практического смысла. Все основные нововведения можно найти в небольших обзорных статьях, а потенциальные проблемные места, которые рассматривает автор - слишком экзотичны и маловероятны в продакшен коде.
Если у вас зрелый проект, где есть хорошее покрытие тестами и внешняя автоматизация от QA-команды, то все проблемные места c php 8.0 можно достаточно быстро выловить. Нет никакой необходимости читать подобные книги для перевода проекта на PHP 8.0. А если проект молодой, то там тем более не будет проблем с какими-то легаси компонентами.
Поэтому так - книга крута в плане того, насколько глубоко можно проанализировать какую-то область, но практической пользы в этом мало.
Интересное замечание
Из приятного дополнения, автор в книге раз 5 приводит ссылку на Dmitry Stogov (https://github.com/dstogov) по тем или иным проектам и вопросам.