PHP Дайджест № 208 (12 – 26 июля 2021)

rquotswfwfgbszj9dqnofnp7e6c.jpeg

Фото: Noriko Yamamoto.

Подборка свежих новостей и материалов из мира PHP. В выпуске: первая бета PHP 8.1 — список новых возможностей и статус последних предложений; в PHP 8.1 будут readonly-свойства, first-class callable, и new в инициализаторах кроме свойств и констант класса. Nikolas Grekas предложил сделать пересечения типов nullable. А также другие новости, порция полезных инструментов, статьи и видео.

Приятного чтения!

image-loader.svg Новости


  • PHP 8.1.0 beta 1


    С первым бета-релизом заканчивается фаза активной разработки, а значит список новых возможностей и изменений в ветке 8.1 можно считать финальным. (За исключением nullable пересечений типов). Следующая бета ожидается 5 августа.

    E66Z7NsXMAIAohk?format=jpg&name=largeКартинка Peter Kokot.

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

    • [RFC] First-class callable syntax — Принят. В PHP 8.1 можно будет получить ссылку на любую функцию:

      image-loader.svg

      Подробнее было в подкасте PHP Internals News #92 с Никитой Поповым.

    • [RFC] Readonly properties 2.0 — В PHP 8.1 буду readonly-свойства.

      image-loader.svg
      Подробнее на канале PHP Digest.

    • [RFC] New in initializers — Также прошел голосование. В PHP 8.1 можно будет использовать оператор new в инициализаторах.

      image-loader.svg
      Подробнее на канале PHP Digest.

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


    А вот эти предложения не набрали достаточно голосов:
    • [RFC] Partial Function Application — не прошел, потому что слишком сложный.
    • [RFC] Is_literal — мнения разделились. Марко Ocramius Пиветта, например, написал, что подобный анализ — это не дело рантайма, а задача для стат анализа.

      Довольно интересные мысли есть в подкасте PHP Internals News podcast #91 с авторами RFC Craig Francis и Joe Watkins.

    • [RFC] Pipe Operator v2 — не прошел, потому что не очень убедительно звучала мотивация. В то же время расширять синтаксис языка дополнительным «сахаром» мало кто хотел.

      Так что пока можно использовать альтернативы на PHP. В PHP 8.1 с поддержкой first-class callable использовать их намного удобнее.

      Вот, например: sebastiaanluca/php-pipe-operator

      Скрытый текст
      $subdomain = Pipe::from('https://blog.sebastiaanluca.com')
                          ->parse_url()
                          ->end()
                          ->explode('.', PIPED_VALUE)
                          ->reset()
                          ->get();
      
                          // "blog"


  • Что нового будет в PHP 8.1
    Вот тут классная подборка примеров PHP 8.1 «до» и «после»: PHP 8.1: before and after.
    Список нового в PHP 8.1
    • Enum они же перечисления RFC;
    • First-class callable — получение ссылки на любую функцию RFC;
    • Readonly свойства RFC;
    • Оператор new в инициализаторахRFC;
    • Новый тип never для возвращаемых значений RFC;
    • Файберы RFC;
    • Финальные константы в классах RFC;
    • Оператор распаковки поддерживает массивы со строковыми ключами RFC;
    • Объявлено устаревшим преобразование float в int, где теряется дробная часть RFC;
    • Интерфейс Serializable объявлен устаревшим RFC;
    • Запись восьмеричных чисел с префиксом 0o RFC;
    • Ограничено использование $GLOBALS RFC.

  • The State of Developer Ecosystem in 2021 | PHP
    Результаты ежегодного опроса разработчиков от JetBrains.
  • PhpStorm 2021.2 Beta с базовой поддержкой дженериков
    Совсем скоро релиз PhpStorm и в нем будет поддержка дженериков. Покрыты базовые сценарии и уже можно работать с коллекциями.


image-loader.svg PHP Internals


  • [RFC] Nullable Intersection types


    Вскоре после принятия RFC по пересечениям типов последовал комментарий от Nikolas Grekas (core Symfony). Он сказал, что без возможности сделать их nullable пересечения мало полезны.

    Формально ветка PHP 8.1 уже заморожена, но для этого предложения решили сделать исключение.

    class Foo
    {
        public (X&Y)|null $bar;
    
        function setBar((X&Y)|null $bar = null): (X&Y)|null
        {
            return $this->bar = $bar;
        }
    }
    

    На голосование также будет выдвинут вопрос о синтаксисе: ?X&Y или (X&Y)|null.

image-loader.svg Инструменты


  • EcotoneFramework — Интересная реализация сервисной шины для DDD, CQRS, и Event Sourcing в PHP. Работает на PHP 8+ через атрибуты, с хорошей документацией и интеграциями для Laravel и Symfony. Пример реализации CQRS.
  • octoper/cuzzle — Позволяет сохранять Guzzle-запросы в виде команд cURL для дальнейшей отладки или логирования.
  • Codeception/robo-paracept — Параллельный запуск тестов Codeception.
  • nuwber/rabbitevents — Пакет для коммуникации между независимыми веб-сервисами через события. Под капотом Laravel Queue, Laravel Events, мидлвари и RabbitMQ.
  • i18n Ally — Плагин для PhpStorm для удобной работы со строками переводов. Автоматически настраивается для Laravel и Symfony, можно вручную настроить для Yii, CodeIgniter и CakePhp. Есть демо со стрима PHP-Дайджеста.
  • Активно разрабатывается Cycle ORM 2.0 — Доступны новые фичи: композитные ключи, кастомные коллекции, типизация в ORM и сущностях. Подробнее об изменениях и о том, как уже попробовать, в этом ruгисте.

image-loader.svg Symfony


image-loader.svg Laravel


image-loader.svg Yii


  • Хроники Yii 3 — Команда Yii запустила канал в телеграме, где подробно рассказывает о процессе разработки 3й версии фреймворка.
  • Релизы пакетов Yii 3:
    • yiisoft/data-response — Автоматическое преобразование данных в PSR-7 ответ, с использованием одного из форматеров (JSON, XML или HTML), а также PSR-15 мидлвари.
    • yiisoft/view — Рендеринг представлений, включает в себя абстракцию над шаблонизаторами с поддержкой иерархии «шаблон / представление / вложенное представление». Также yiisoft/yii-view для веб-специфичных штук и yiisoft/view-twig для твига.
    • yiisoft/mailer и yiisoft/mailer-swiftmailer для работы с почтой.

image-loader.svg Статьи


image-loader.svg Аудио/Видео


community Сообщество



Подписывайтесь на Telegram-канал PHP Digest.


Если вам понравился дайджест, поставьте, пожалуйста, ему плюс.

Заметили ошибку или опечатку? Сообщите в личку хабра или телеграм.

Прислать ссылку можно через форму или просто написав мне в телеграм.
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 207

© Habrahabr.ru