Подборка свежих новостей и материалов из мира PHP.

Вышел PHP 8.1 RC2 и уже доступен первый пакет с использованием перечислений, будет сделан форк Magento, новый тип стандартов PER в дополнение к PSR, стартовала PhpStorm 2021.3 EAP, Symfony 6 будет полностью типизирован — как обновляться?

Для PHP 8.2 предложены новые оптимизированные структуры данных.

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

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

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

Новости


  • PHP 8.1 RC 2


    Второй релиз-кандидат доставлен по расписанию. Обзоры новых фич в PHP 8.1 можно посмотреть в постах What's new in PHP 8.1 и PHP 8.1: before and after и на PHP.Watch.

    Также уже доступно руководство по миграции на PHP 8.1.

    Пара свежих переводов:


    Попробовать PHP 8.1 можно из докера, например, php:8.1-rc-cli, на маке через homebrew, или просто поклацать на 3v4l.org.

    Уже появился первый пакет с использованием перечислений из PHP 8.1!
    alexanderpas/php-http-enum — Енамы со статус-кодами и текстами сообщений HTTP-ответов.

  • PHP 8.0.11, 7.4.24 и 7.3.31


    Обновления актуальных веток с секьюрити фиксом CVE-2021-21706.

    Суть бага была в том, что ZipArchive::extractTo мог извлечь zip-архив за пределы целевого каталога при определенных именах путей к файлам на Windows.

  • The Future of Magento


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

    Adobe анонсировали, что планируют декомпозицию Magento на микросервисы. Как конкретно это будет проходить — непонятно. Поэтому и будет создан форк. Он будет совместим с адоубивской Magento, до тех пор, пока та будет открытой.

  • PhpStorm 2021.3 Early Access Program Is Open


    Стартовала программа раннего доступа PhpStorm 2021.3. Каждую неделю публикуем новые билды, в которых можно первым пощупать новые фичи.

    В релизе будет полная поддержка PHP 8.1, много улучшений для дженериков, новые опции для деплоймента, обновленный интерфейс отладчика и много другого.

  • PER Workflow — PHP-FIG


    PHP-FIG одобрила идею PHP Evolving Recommendations. В дополнение к PSR-стандартам теперь будут PER — это такие рекомендации, которые могут постоянно изменяться и дополняться. Например, в случае код-стайла пополнятся правилами для новых возможностей языка.


PHP Internals


  • Новые структуры данных в PHP


    В PHP есть универсальная структура данных — массив, которую можно использовать и как обычный список, и как ассоциативный массив, и как очередь, стек и т.п.

    Универсальность достигается благодаря тому, что под капотом используется хеш-таблица. Но за такую универсальность приходится платить дополнительной памятью.

    В SPL есть более специализированные структуры данных, но у них багаж своих проблем.

    Tyson Andre предлагает добавить новые оптимизированные реализации структур данных в PHP.

    Одним из вариантов было бы добавить структуры из популярного расширения php-ds/ext-ds, но его автор не поддерживает эту идею. Подробности вот тут.

    Поэтому пока есть два RFC:
    • [RFC] final class Vector

      Структура вектор — это набор элементов с последовательными индексами 0, 1, 2 и т.д. Памяти требует в два раза меньше, чем текущие массивы и работает быстрее структур из SPL.

      В плане API это обычный класс с реализацией интерфейсов ArrayAccess, IteratorAggregate и Countable.
      $values = new Vector();
      for ($i = 0; $i < $n; $i++) {
          $values[] = $i;
      }
      
      for ($i = 0; $i < $n; $i++) {
          echo $values[$i];
      }
      
    • [RFC] final class Deque

      Deque — это двухсторонняя очередь, то есть элементы можно добавлять и удалять как в начало, так и в конец.

      Использовать можно везде, где были SplQueue или SplDoublyLinkedList и сходу получить выигрыш в производительности, и уменьшить расход памяти.

      Также Deque актуален для долгоиграющих приложений, в которых используются большие массивы.

    Реализации этих и других структур доступны в расширении TysonAndre/pecl-teds.


Инструменты


  • mrsuh/php-generics — Ещё одна попытка реализации дженериков на PHP. Интересная статья от автора в поддержку: PHP Generics. Right here. Right now
  • spiral/roadrunner 2.4 — Большое обновление сервера приложений для PHP на Golang. В релизе: поддержка очередей, key-value хранилищ, интеграция с Temporal. Подробности.
  • dwgebler/doclite — NoSql хранилище на PHP (На базе SQLite)
  • vjik/codeception-db-populator — Модуль для Codeception, позволяющий загружать только необходимые таблицы и данные для текущего теста. Ускоряет выполнение тестов и повышает удобство подготовки данных для них.
  • brick/date-time — Пакет с набором иммутабельных классов для работы с датой и временем.


Symfony




Laravel




Статьи




Аудио/Видео




community Сообщество





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

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


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

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

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


  1. shuchkin
    27.09.2021 21:34
    +2

    Роман, спасибо за обзор!


  1. alex_p007
    28.09.2021 23:50

    Php продолжает радовать! Главное, чтобы ребята не останавливались.


  1. Mozhaiskiy
    01.10.2021 21:29

    Массивы-векторы это вроде бы хорошо. Ещё со времён AS3 помню, насколько вектора быстрее и компактнее "обычных" массивов — иногда в памяти нужно хранить и обрабатывать большие сложные структуры, для которых нафиг не нужны "ассоциативные" ключи, тут высокопроизводительный вектор бы очень помог, особенно вектор из векторов (и далее по измерениям :) Другой вопрос, что Php всё больше пытается усидеть сразу на всех стульях и чуток теряет целостность своей идеологии. Но в любом случае, развитие это хорошо.