PHP-Дайджест № 116 – свежие новости, материалы и инструменты (27 августа – 10 сентября 2017)



    Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.2.0 RC 1, Laravel 5.5 LTS, чистый код на PHP, предложения из PHP Internals, видео с конференций и митапов, и многое другое.
    Приятного чтения!



    Новости и релизы


    • PHP 7.2.0 RC 1 — Стартовал цикл релиз-кандидатов ветки 7.2. Ожидается всего не менее 6 выпусков для стабилизации. Тем временем можно почитать что нового в PHP 7.2: тут habr и тут.
    • PHP 7.0.23, PHP 7.1.9
    • Laravel 5.5 LTS — Под капотом filp/whoops для ошибок, автообнаружение пакетов, улучшения очереди задач, улучшения исключений, фронтенд пресеты для React, и многое другое.
    • Behat 3.4.0 — Обновление популярного BDD-фреймворка.
    • NGINX Unit — Анонсирован сервер приложений от команды Nginx с поддержкой PHP.

    PHP Internals


    • RFC: Operator functions — Для всех операторов, кроме присваивания, предлагается добавить одноименные функции, чтобы их можно было использовать в качестве аргументов функций высшего порядка:

      // Суммирует элементы массива (Эквивалент array_sum())
      $sum = array_reduce($terms, '+', 0);
      
    • Add Fiber (sackful coroutine) support — Интересное улучшение генераторов в PHP, которое позволило бы упростить асинхронный код. Пока не оформлено в виде формального RFC, но уже имеется черновой пул-реквест.

    Инструменты


    • Botman 2.0.0 — Фреймворк для создания чат-ботов. Из коробки поддерживает: Slack, Telegram, Nexmo, HipChat, Facebook Messenger, WeChat. Туториалы Laravel + Botman: Telegram, FB Messenger, Slack.
    • nkkollaw/zubr — Инструмент призван исправить проблемы встроенных функций PHP: добавлены неймспейсы, консистентное именование и порядок аргументов.
    • Prooph — Инструменты для реализации CQRS и Event Sourcing на PHP. Туториал. Что такое Event Sourcing и почему это круто.
    • parpalak/rose — Встраиваемый поисковый движок с поддержкой русского языка.
    • spatie/fractalistic — Обертка над thephpleague/fractal добавляющая короткий текучий интерфейс.

    Материалы для обучения



    Аудио и видеоматериалы



    Занимательное



    Спасибо за внимание!

    Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
    Вопросы и предложения пишите на почту или в твиттер.

    Прислать ссылку
    Быстрый поиск по всем дайджестам
    Предыдущий выпуск: PHP-Дайджест № 115

    Zfort Group 325,37
    Компания
    Поделиться публикацией
    Комментарии 18
    • +2
      Как всегда, спасибо большое! Из всей подборки я рад тому, что можно Laravel-сертификат получить. Давно уже было анонсировано, наконец-то такая возможность появилась.
      • 0
        Хороший способ заработка, 200 евро за ваучер. В Laravel хорошие маркетологи…
      • +1
        Я не в первый раз высказываю мнение, что библиотеку похожую на github.com/nkkollaw/zubr (в которой нормализированы функции для строк и массивов) нужно реализовать на уровне языка. То есть, оставить legacy в виде старых функций напр., strlen, но при этом добавить новые классы, в которых все аргументы и возвраты будут адекватно систематизированы.
        А пока приходится использовать подобные библиотеки, которые отличные, но имеют фатальный недостаток — они не стандартизированы на уровне языка, поэтому будут использоваться очень малой частью разработчиков.
        • +2
          По поводу стандартизации имен функций уже есть RFC созданное 2,5 года назад — wiki.php.net/rfc/consistent_function_names, но, к сожалению, оно не двигается.
          • +1
            Да, видел это RFC (благодаря PHP-Дайджесту, конечно!). Очень жаль. Хотя она больше фиксит существующую библиотеку функций, а мне кажется интересной идея работы со строкой как с объектом (как в Python), но это, очевидно, будет создавать дополнительный расход памяти, если не придумать какое-то хитрое поведение/хак, который и так усложнит непростую историю PHP.
            Заодно сразу же можно было бы реализовать мультибайтовость строк.
            Конечно, уверен, что есть десятки библиотек (и библиотека zubr одна из них), но их проблема в том, что о них мало знают и они не закреплены как рекомендованные на уровне языка/документации.
            • +3
              идея работы со строкой как с объектом (как в Python)

              и приведет к проблеме манкипатчинга. Намного интереснее выглядит pipe-оператор:


              $result = 'Hello, habrahabr'
                  |> strlen($$)
                  |> pow($$, 2)
                  |> range(0, $$)
                  |> array_map($someTransformation, $$);

              почему я так считаю:


              1. подход проще в расширении. В классами/объектами без манкипатчинга вы будете ограничены определенным набором функций. Функции же можно добавлять столько сколько вы хотите. и пайп оператор справится.
              2. с точки зрения синтаксиса такой вариант намного проще и его можно комбинировать с цепочками вызовов:

              $collection = $myObjects
                  ->map($someTransformation)
                  ->reduce($calculateSum)
                  |> pow($$, 2)
                  |> new SomeStats($$);

              будет создавать дополнительный расход памяти, если не придумать какое-то хитрое поведение/хак

              Для примитивных типов можно просто сделать схожий синтаксис, но не делать все вещи полноценными объектами. Схожие "хитрые поведения/хаки" используются во многих языках программирования. Если этого не делать — все оптимизации php7 и выше пойдут коту под хвост.


              Заодно сразу же можно было бы реализовать мультибайтовость строк.

              расскажите пожалуйста какие у вас на сегодняшний день есть проблемы с мультибайтовыми строками?

        • +1
          Большое спасибо за статью!
          • –1
            • +1
              Спасибо за материал. Есть пожелание — включите, пожалуйста, в подборку информацию по фреймворку phalcon.
              • 0
                По Phalcon в последнее время мало материалов попадается. Если есть что напримете, присылайте мне на почту или в форму ссылки, это очень поможет!
                • 0
                  Думаю потому, что толку с него не много в пхп7.
                  Он то наверно побыстрей, но сам пхп редко становится узким местом.
                  Вот бы кто доктрину на зефире перепили и скомпилил как екстеншен, но это работы немерянно.
                  • 0

                    перепись доктрины как есть на зефире ничего толком не даст. А вот реализовать генерацию гидраторов под запросы — это можно. А так для 3.0 они вот даже php-ds собираются использовать для нутра что бы ускорить UoW.

                    • 0
                      Не уверен что только гидраторы переписать удастся
                      • 0

                        ну я пробовал, у меня даже валяется сырой вариант штуки которая генерила "эффективный" код для гидрации выборки. Она правда работает только с простыми вариантами пока (отпала нужда).


                        Есть так же проекты предоставляющие более быстрые гидраторы (например для выборки на чтение) которые минуют UnitOfWork (что дает нехилый буст). Мне же в последнее время все больше импонирует идея read model отдельной.

                        • 0
                          Чисто психологически — мне тоже. Но вот как подумаю о лаге синхронизации, так все и рассыпается.
              • 0

                THT — это то, что раньше называлось OWL. Любопытно, реально ли на нем делать сколько нибудь сложные приложения?

                • 0

                  Botman меня заинтересовал. Надо будет ближе познакомиться с ним.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое