PHP Дайджест № 212 (13 – 27 сентября 2021)
Подборка свежих новостей и материалов из мира 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.- [RFC] final class Vector
Инструменты
- 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
Статьи
Аудио/Видео
Сообщество
Подписывайтесь на Telegram-канал PHP Digest.
Этот дайджест подготовлен совместно с Insolita. Если вам понравился выпуск, поставьте, пожалуйста, ему плюс.
Заметили ошибку или опечатку? Сообщите в личку хабра или телеграм.
Прислать ссылку можно через форму или просто написав мне в телеграм.
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 211