В настоящий момент выходит не так много книг по PHP, поэтому я решил прочитать свежее переиздание книги PHP Cookbook от 2023 года, которую в России переводят, как "PHP. Рецепты программирования". Хотелось бы понять, что можно написать не про какую-то сферу, где применяется PHP, а именно про сам язык.

PHP Cookbook (2023)
PHP Cookbook (2023)

Об авторе

Эрик Манн - инженер-программист с опытом почти в два десятилетия. Он создавал масштабируемые проекты для стартапов на ранней стадии и для компаний из списка Fortune 500. Эрик часто рассказывает о архитектуре программного обеспечения, технике безопасности и передовом опыте разработки. Он регулярно уже более пяти лет пишет статьи в журнале php[architect], и больше всего ему нравится помогать новым разработчикам избегать многих ошибок, которые он совершил в своей карьере программиста.

Кратко о сути книги

Это небольшая обзорная книга на тему того, как работает современный PHP 8.2, как можно решать ежедневные задачи и к чему нужно стремиться при разработке современных приложений на PHP.

Отдельно хочется отметить тот факт, что автор призывает отказаться от процедурного стиля программирования, который можно повсеместно найти в старых проектах, в пользу использования функционального и объектно-ориентированного стиля.

Обзор содержания книги

Если вы разработчик PHP и ищете проверенные решения распространенных проблем, эта  книга содержит примеры кода, которые помогут вам решить множество проблем. PHP — удивительно простой язык для работы, что объясняет, почему сегодня на нем работает более 75% веб-сайтов в Интернете. Он также невероятно снисходительно относится к ошибкам в коде, что может привести к тому, что плохие практики будут воспроизводиться годами.

Используя современные версии PHP вплоть до версии 8.2, автор Эрик Манн предлагает автономные рецепты, которые позволят вам решить проблемы, с которыми вы сталкиваетесь в повседневной работе. Вы также найдете установленные шаблоны и примеры, которым может следовать любой разработчик для решения распространенных проблем с PHP. С помощью этих рецептов вы быстро определите и решите сложные проблемы, не изобретая велосипед.

Это практическое руководство поможет вам:

  • Создавать эффективные приложения, состоящие из функций и объектов;

  • Изучить систему типов современного PHP;

  • Иметь понимание ключевых понятий, таких как шифрование, обработка ошибок, отладка и настройка производительности;

  • Изучить экосистему пакетов/расширений PHP;

  • Узнайть как создавать базовые веб-приложения и приложения командной строки;

  • Безопасно работать с файлами на машине, как в зашифрованном, так и в текстовом виде;

  • Получить обзор современных подходов для асинхронного программирования.

Плюсы книги:

  • Есть полный обзор современных фич PHP;

  • Автор призывает отказываться от "плохого кода" и стремиться писать хороший код (включая стрик_тайп);

  • Книга достаточно краткая, при этом содержит все основные понятия. Даже сложно сказать, можно ли было бы написать это короче;

  • Достаточно хороший обзор асинхрона в PHP: AMPHP, ReactPHP, Open Swoole, RoadRunner, Octane.

Минусы книги:

  • Не так, чтобы примеры кода в книге сильно отличались от официальной документации и задач уровня easy на leetcode;

  • Многие примеры кода достаточно тривиальные, без углубления в какие-то более сложные кейсы

Итоговое мнение

Опытный разработчик на современном стеке вряд ли найдет в этой книге что-то новое и полезное. Однако, если вы долго работали на легаси проектах на PHP 5.4, либо каких-то CMS, то эта книга даст хороший обзор, что такое современный PHP.

Можно не тратить время на поиск и чтение разных статей на тему современного PHP, когда можно все узнать из одной книги.

Интересное замечание

В этой книге приводятся примеры из Symfony, Laravel и асинхронных фреймворков. Zend (Laminas) и Yii снова считаются устаревшими фреймворками, которые больше не заслуживают упоминания.

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


  1. SviatoslavGusev
    17.06.2023 11:39
    -9

    PHP — классика для старичков, для которой конечно есть море библиотек. Но условный Котлин, намного лучше (хоть это и считается дорогой технологией).


    1. antonstovpets
      17.06.2023 11:39
      +17

      Это главная проблема начинающих программистов. Говорит что какой то язык лучше. Котлинг выполняет задачи проверено в другой области. Нет ни одного универсального языка. Можно ещё ассемблер вспомнить.

      PHP может для стариков, однако на нем работает до 90% сайтов и несколько крупных сервисов. Думаю он ещё долго будет пользоваться спросом.


      1. aceofspades88
        17.06.2023 11:39
        -2

        Только 90% процентов из этих 90% это вп бложики и прочий скам


  1. FanatPHP
    17.06.2023 11:39
    +4

    Не так, чтобы примеры кода в книге сильно отличались от официальной документации

    Мне кажется, тот же самый минус есть и у данной публикации, которая на 90% состоит из аннотации с сайта издательства. Оригинального контента здесь замечание в две строчки и опрос.


    Причем даже в таком небольшом объеме куча ошибок и опечаток. 400 страниц — это никак не "небольшая" книга, а что такое "стрик_тайп" можно только догадываться.


    Итоговое мнение: проходная халтура.


  1. kaboose
    17.06.2023 11:39
    +2

    А какая сейчас современная литература по пыхе?


    1. olku
      17.06.2023 11:39

      Присоединяюсь к вопросу. Чтоб хардкорно, типизировано, SOLIDно, с DDD, псалмом и фаном на максималках.


      1. FanatPHP
        17.06.2023 11:39

        Ну тут да, надо разделять. Я согласен с edogs, что писать про "DDD на РНР" не слишком актуально. DDD — это архитектура, а она плюс-минус везде одинаковая. И пхпшники всегда учили ее по Мартину.


        В принципе Матиас Нобэк пишет довольно активно, https://matthiasnoback.nl/books/. Не Псалм, но Ректор, что может быть даже и лучше. Ну и архитектура. Я, правда, сам не читал, не могу сказать за содержание. Но в любом случае, это не "литература по пыхе". Это литература по архитектуре, с примерами на пыхе.


        1. olku
          17.06.2023 11:39

          Программист всегда строит архитектуру кода даже если о ней не задумывается. FizzBuzzEnterpriseEdition шутка лишь отчасти. Поскольку DDD востребован в коммерческой разработке, посылать читателя искать в другом месте как же все таки надо этот код строить - это удел не очень хорошей книги. Может, отсюда растут ноги у говнокода и репутации языка?


          1. FanatPHP
            17.06.2023 11:39
            +6

            Про книжку не понял. Это какая имеется в виду, и куда именно она посылает?
            Ноги у говнокода и репутации растут ровно из одного места: запредельно низкого порога вхождения и повальной массовости в нулевые.


            У вас какой-то очень широкий запрос — и SOLID, и DDD, и Псалм, и чтобы клоуны из Мадональдса смешными голосами читали. Хотите про SOLID — читайте про SOLID. Хотите про DDD — читайте про DDD. Хотите про рефакторинг — читайте про рефакторинг. Если хотите книжку "как написать екоммерс на 100000 заказов в день, чтобы Фаулер умер от зависти глядя на код", то такой нету.


            1. olku
              17.06.2023 11:39

              Да, интересует хардкорная сениорская лит-ра с конкретными примерами. Спасибо за ссылки ниже, погляжу.


          1. FanatPHP
            17.06.2023 11:39
            +2

            Я думаю, что ближе всего к вашим запросам вот эта
            https://matthiasnoback.nl/book/advanced-web-application-architecture/
            Но опять же, насколько я понимаю, там предполагается что вы уже хорошо знаете РНР и знакомы с принципами SOLID. И повествование строится на этой базе. Потому что вообще всё вами заказанное впихнуть в одну книжку не получится.


            1. FanatPHP
              17.06.2023 11:39

              Хы, отбой :)


              The programming language used for the code samples in this book is a generalized
              object-oriented programming language. Its syntax is a mix of PHP and Java


    1. edogs
      17.06.2023 11:39
      +5

      По php - официальный manual. Кроме шуток. Собственно как и почти по каждому языку, но прелесть мануала по пхп в том, что он достаточно мал и пары недель хватит, что бы иметь возможность кодить правильно (то есть знать что язык может, что не может и где если что искать детали). Это Вам не stl в c++, которую, условно говоря, можно годами читать:)
      Просто надо понимать, что знание языка никак не дает знание программирования.
      Если Вы знаете "типизированность, солиды и ДДД" на абстрактном уровне, то мануала по пхп Вам хватит что бы реализовывать всё это на пхп. Если не знаете, то мануал ни по какому языку не научит Вас этому.


    1. FanatPHP
      17.06.2023 11:39
      +7

      Если с нуля, то Джон Дакетт. Не без косяков, но в целом хорошо, причем именно грамотной подачей базовых концепций — разделение ответственности, обработка ошибок, отладка, типизация, шаблонизация, пакеты, композер. Но там именно с нуля, начиная с "что такое переменная, что такое функция". И так до законченного приложения, такой соцсеточки на минималках.


      Если ООП, то Мэтт наш, Зандстра, который как раз только что обновил свой опус магнум.


      Если архитектура, то вот Маттиас Нобэк, про которого я писал в соседнем комменте, но не он один. Как раз недавно был пост на Реддите, с конкретными названиями, https://old.reddit.com/r/PHP/comments/zehsc1/top_10_recommended_books_for_php_developers/


      Впрочем, скопирую его целиком сюда


      1. Learn PHP For the Web by Matthias
        This book will get you up to speed with the basics of PHP and give you a few small projects to build in your learning journey.
        https://leanpub.com/learning-php-for-the-web-without-a-framework/
      2. Front Line PHP by Spatie
        This book will get you up to speed with the latest additions to PHP up to (the upcoming release of) 8.2 so that you can familiarize yourself what's possible to do with modern PHP.
        https://front-line-php.com
      3. Object Design Style Guide by Matthias Noback
        This book will teach you everything about object oriented programming and the different types of objects in PHP.
        https://www.manning.com/books/object-design-style-guide
      4. Principles of Package Design by Matthias Noback
        This book will teach you about applying the SOLID principles in PHP among other things.
        https://matthiasnoback.nl/book/principles-of-package-design/
      5. Advanced Web Application Architecture by Matthias Noback
        This book will teach you about some of the tactical patterns of Domain Driven Design and Hexagonal Architecture, which also has a full application built in PHP for you to check out.
        https://matthiasnoback.nl/book/advanced-web-application-architecture/
      6. Domain Driven Design in PHP
        This book will teach you about some of the tactical patterns of Domain Driven Design and Hexagonal Architecture, from a different point of view compared to the previous book. This book also has a full PHP app example.
        https://leanpub.com/ddd-in-php
      7. CQRS By Example
        This book will teach you about Command-Query Responsibility Segregation and how to think about it and use it in PHP. This book also has a full app example for reference.
        https://leanpub.com/cqrs-by-example
      8. Recipes For Decoupling by Matthias Noback
        This book will teach you about decoupling your business logic / domain code from the framework of choice, and how to create PHPStan rules to stop others from misusing the rules of writing code.
        https://leanpub.com/recipes-for-decoupling/
      9. Rector — The Power of Automated Refactoring by Matthias Noback and Tomas Votruba
        This book will teach you everything you need to know about how to automatically refactor code with Rector.
        https://leanpub.com/rector-the-power-of-automated-refactoring
      10. Microservices For Everyone by Matthias Noback
        This book will teach you about Microservices, pros and cons of using them and how to implement them in PHP. This book has a great Microservices example for reference.
        https://leanpub.com/microservices-for-everyone