Буквально месяц тому назад вышла книга: "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, чтобы улучшить перфоманс вашего приложения. 

Что вы узнаете 

  1. Получите полное представление о новых объектно-ориентированных функциях PHP 8.

  2. Откройте для себя новые усовершенствования процедурного программирования PHP 8.

  3. Понять улучшения в обработке ошибок в PHP 8

  4. Выявление потенциальных проблем с обратной совместимостью.

  5. Избегайте ловушек из-за изменений в расширениях PHP

  6. Узнайте, какие функции устарели и / или удалены в PHP 8.

  7. Ознакомьтесь с лучшими практиками программирования, применяемыми в 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) по тем или иным проектам и вопросам.

Комментарии (4)


  1. Deaddy
    10.10.2021 16:09
    +1

    В голосовании не хватает пункта "Узнал, потому что обновился и всё легло" )


    1. dest2r4
      11.10.2021 09:56
      +1

      потом откатился назад, и уже не работают 2 версии)


  1. eandr_67
    10.10.2021 18:19

    FFI появился в PHP 7.4 и в 8.0 практически не изменился (лишь добавилось разрешение передавать null в паре параметров). Довольно странно видеть скриншот с методами FFI и упоминание «разработки экстеншена для php через FFI» в книге, посвящённой нововведениям 8.0.

    И не поздновато ли читать (и выпускать) книгу по «новым фичам» PHP 8.0 в тот момент, когда заканчивается очередной релиз-цикл PHP и новыми являются совсем иные «фичи» версии 8.1? Практически всё, что можно было сказать о 8.0 — уже давно общее место. А вот информации о правильном использовании возможностей 8.1 ещё маловато.


  1. SerafimArts
    11.10.2021 07:12

    лишь добавилось разрешение передавать null в паре параметров

    А ещё у CType добавился getName метод. В 8.1 дофига всего добавилось, кстати. Только оно было проведено через PR без RFC.


    P.S. Упс, промахнулся веткой, но думаю не страшно.