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



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



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


    • О будущем HHVM — Не так давно многие проекты отказались от поддержки HHVM. Теперь команда HVVM анонсировала, что в долгосрочной перспективе не планирует стремиться к полной поддержке PHP 7. Вместо этого, ребята из Facebook сосредоточатся на Hack. Тем не менее в ближайшее время планируется исправить проблемы совместимости с популярными инструментами вроде Composer и PHPUnit.
    • PHP 7.2.0 RC 2 — Второй релиз-кандидат доставлен по расписанию. Следующий выпуск ожидается 28 сентября. Об изменениях ветки можно почитать тут и тут. Протестировать с помощью подготовленного Docker-образа.
    • Sylius v1.0.0 — Мажорный релиз популярной е-коммерс платформы на базе Symfony.


    PHP Internals


    • [RFC] RFC Workflow & Voting — Предлагается регламентировать процесс RFC, в частности, при голосованиях повысить порог принятия изменений до 2/3. Также обозначены критерии для тех, кто может голосовать.
    • [RFC] Class Friendship — Вторая попытка реализовать концепцию дружественных классов. Дружественный класс имеет доступ к private и protected полям класса, в котором он объявлен дружественным.
    • [RFC] Fiber — Интересное дополнение генераторов в PHP, которое позволило бы упростить асинхронный код.
    • Pre-draft PipeOp v2 — В Internals обсуждается черновик предложения для pipe-оператора. Оригинальное предложение было раскритиковано из-за использования плейсхолдера $$ и теперь предложен более простой вариант:

      $x = "hello" 
      |> 'strtoupper' 
      |> function($x) { return $x . " world"; }; 
      // $x === "HELLO world"
      

    Инструменты


    • PoweredLocal/vrata — Реализация паттерна для микросервисов API Gateway на основе Lumen.
    • jamesmoss/flywheel — База данных на основе файлов (JSON, YAML, или Markdown) и с билдером запросов.
    • spatie/macroable — Трейт для динамического добавления методов в класс. Подробнее в посте.
    • felixfbecker/php-language-server — PHP-реализация VS Code Language Server Protocol.
    • BetterReflection 2.0.0 — Рефлексия без загрузки классов.
    • tagua-vm/tagua-vm — Экспериментальная виртуальная машина PHP на Rust и LLVM.


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




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




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



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

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

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

    Zfort Group 332,04
    Компания
    Поделиться публикацией
    Комментарии 10
    • +2
      Friendly давно не хватало для реализации тесно связанных классов типа сущностей и их репозиториев, фабрик и т. п. Правда, есть опасения, что без нормальной видимости области модуля(неймспейса) будут злоупотреблять, что списки дружественных классов будут необъятными.
      • 0
        Свобода всегда ответственность)
      • 0
        Pre-draft PipeOp v2 — В Internals обсуждается черновик предложения для pipe-оператора.

        Немного не понимаю смысла в такой штуке. Сколько примеров не видел — вижу только более запутанный код, нежели упрощение. Или я совсем отстал от жизни?

        • 0
          Это больше в функциональщину. Более легкая композиция функций)
          • +4
            Видимо, идея в том, что поток данных отображается более корректно. Примерно как method call chaining, только для всего. Например,
            urlencode(str_replace('http://', '', strtolower($db->fetch('SELECT url FROM table')->url)));
            

            с цепочкой вызовов (или пайпов) мог бы быть
            $db->fetch('SELECT url FROM table')
              ->url
              ->strtolower()
              ->str_replace('http://', '')
              ->urlencode();
            
            $db->fetch('SELECT url FROM table')->url
            >| 'strtolower'
            >| str_replace('http://', '')
            >| 'urlencode';
            
            • +3

              Именно так. что бы поток выполнение шел в том порядке в котором код записан и при этом без необходимости использовать временные переменные.


              Вообще на рэддите там неплохой холивар был на тему этой верасии RFC. Дело в том что $$ никуда не исчез, просто его хотят пропихнуть как другую RFC, цель которой делать более удобные callable:


              $strToUpper = strtoupper($$); // по сути создает замыкание
              $someMethod = $obj->doSomething($$);
              // вместо
              $strToLower = 'strtolower';
              $someMethod = [$obj, 'doSomething'];

              что должно позитивно сказаться на консистентности языка. А без плэйсхолдера или же без возможности декларировать такие вот лямбды из коллабл ценность фичи резко падает.

          • +2
            Подборка чатов по PHP
            Знаете еще? Пишите в комментариях!

            Несколько (официальных) чатов русскоязычных сообществ:
            1) Laravel: https://gitter.im/LaravelRUS/chat
            2) Drupal (Drupal.ru и dru-io): https://gitter.im/DrupalRu/chat и https://gitter.im/dru-io/Drupal
            3) Symfony (Symfoniacs): https://gitter.im/ru-symfoniacs/chat
            3.5) Symfony (просто самый большой по symfony): https://gitter.im/php-ua/symfony
            4) Yii: https://gitter.im/yiisoft/yii2/rus

          • 0

            Пишу с использованием Yii2. Очень ждал заголовок Yii2 в материалах для обучение. Но нет… Грустно

            • +1
              В этот раз не попалось на глаза интересных материалов, так иногда бывает, не повод грустить :-)

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

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