PHP-Дайджест № 145 (26 ноября – 10 декабря 2018)


    Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.3.0, Symfony 4.2, Composer 1.8.0 и другие релизы, конец поддержки PHP 5.6 и PHP 7.0, свежие предложения из PHP Internals, порция полезных инструментов, видеозаписи докладов и многое другое.
    Приятного чтения!



    Короткая аудиоверсия дайджеста в подкасте Пятиминутка PHP Выпуск №44

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


    • PHP 7.3.0 — Долгожданный мажорный релиз PHP доставлен строго по расписанию. Спасибо всем контрибьюторам и релиз-менеджерам за проделанную работу! В свежей версии интерпретатора ряд улучшений:
      • Улучшения Heredoc и Nowdoc синтаксиса RFC
      • Функции json_encode() и json_decode() будут бросать исключение в случае ошибки и наличия соответствующего флага RFC
      • Возможность использовать запятую после последнего аргумента функции RFC
      • Добавлены функции array_key_first() и array_key_last() RFC
      • Новая функция hrtime(), которая возвращает время высокой точности и не зависит от системного времени PR
      • Добавлена функция is_countable() для проверки на перечислимость RFC
      • Использование ссылок в list() RFC
      • Значительное улучшение сборщика мусора улучшает работу с больши́м количеством объектов PR
      • Движок регулярных выражений обновлен до PCRE2 RFC
      Полный список изменений в документе UPGRADING.
      Очень рекомендую посмотреть руководство по миграции с PHP 7.2.x на PHP 7.3.x, спасибо lex111 за перевод.
    • Свет также увидели обновления PHP 5.6.39, PHP 7.0.33, PHP 7.1.25 и PHP 7.2.13. И это последние релизы веток 5.6 и 7.0, а PHP 7.1 переходит в режим поддержки безопасности. Таким образом, на данный момент актуальными остаются только ветки PHP 7.2 и PHP 7.3.
    • PHP на AWS Lambda — На конференции AWS re:Invent 2018, кроме всего прочего, анонсирована поддержка кастомных рантаймов для AWS Lambda. PHP из коробки поддерживается через stackery/php-lambda-layer, но можно сделать и свою реализацию. Это значит, что вместо костылей в виде запуска через Nodejs или Go, теперь можно писать полноценные лямбды на чистом PHP.
    • Composer 1.8.0
    • CakePHP 3.7.0
    • PHPUnit 7.5.0

    PHP Internals


    • [RFC] FFI — Foreign Function InterfaceКонцепт от Дмитрия Стогова теперь оформлен в виде полноценного предложения. Реализация даст возможность использовать функции и структуры данных из C-модулей напрямую. В качестве примера можно посмотреть на PHP-биндинг для TensorFlow. Большие возможности, правда, открывают и широкий простор для потенциальных проблем и уязвимостей, поэтому предлагается по умолчанию разрешить FFI только в CLI-скриптах и предзагруженных файлах.
    • [RFC] Covariant Returns and Contravariant Parameters — Предлагается сделать более консистентным типы, в частности, разрешить «сужать» тип возвращаемого значения в наследниках, и «расширять» тип параметров.
      Скрытый текст
      interface X {
        function m(Y $z): X;
      }
      interface Y extends X {
        // Тут можно будет сужать тип
        function m(X $z): Y;
      }
      
      
      
      interface Concatable {
          function concat(Iterator $input); 
      }
       
      class Collection implements Concatable {
          // А тут можно будет расширять тип
          function concat(iterable $input) {/* . . . */}
      }
      


    Инструменты


    • spatie/period — Библиотека позволяет делать сложные сравнения дат, например, найти пересечения периодов, разницу, пробелы, крайние границы и прочее.
    • scrivo/highlight.php — Порт highlight.js, который позволяет подсвечивать синтаксис на сервере. Интеграция с markdown через spatie/commonmark-highlighter.
    • 3v4l.org/live — Интерактивный онлайн PHP шелл (REPL).
    • j6s/phparch — Библиотека для архитектурного тестирования PHP-проектов, вдохновленная archlint (C#) и archunit (Java). Разработка в процессе.
    • halaxa/json-machine — Потоковое чтение (декодирование) JSON. Для потокового кодирования подойдет violet-php/streaming-json-encoder.
    • DivineOmega/password_exposed — Проверяет с помощью haveibeenpwned.com API был пароль скомпрометирован.
    • skollro/alexa-php-sdk — SDK для разработки скилов для Amazon Alexa на PHP.
    • pyrech/composer-changelogs — В удобном виде выводит информацию об обновленных пакетах после выполнения composer update.
    • RubixML/RubixML — Библиотека для применения машинного обучения на PHP. Альтернатива php-ai/php-ml.


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




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




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



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

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

    Больше новостей и комментариев в телеграм-канале PHP Digest.

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

    • +45
    • 14,1k
    • 4
    Поделиться публикацией

    Похожие публикации

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

      +1
      В CMS я бы добавил ещё и очередной релиз друпала — drupal 8.6.4
        +1

        В 7.3 добавили функцию \gc_status(), не нашел нигде в changelog. Возможно уберут с сл. версии, а может забыли.

          0
          Спасибо за «14 вредных советов», есть кому переслать.

          Насчет (10) нейминга интерфейсов я не согласен с автором, мне больше близка позиция Mathias Verraes, который очень хорошо всё расписал в своём посте Sensible Interfaces — verraes.net/2013/09/sensible-interfaces
            0
            Опять ничего интересного в минорном релизе. А вот [RFC] FFI — Foreign Function Interface и [RFC] Covariant Returns and Contravariant Parameters хотелось бы побыстрее увидеть.

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

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