Подборка свежих новостей, инструментов, видео и материалов из мира PHP.
Приятного чтения!
Выпуски с исправлениями ошибок вышли по расписанию.
Очередной RC был выпущен в соответствии с расписанием. Следующий релиз – RC4 ожидается 12 октября.
С подробным списком изменений в PHP 8.3, можно ознакомиться на сайтах php.watch или stitcher.io.
Команда PhpStorm в 2023.3 планирует добавить комплексную поддержку PHP 8.3, возможность исключать каталоги и файлы внешних библиотек для ускорения индексации, специальную стилизацию типов в дженериках.
Для Symfony разработчиков будет полезным мастер создания нового проекта, преобразование аннотаций Doctrine в атрибуты, а также поддержка Doctrine Query Language внутри QueryBuilder.
Команда CakePHP выпустила пятую версию фреймворка, которая была в разработке последние два года. Теперь для работы требуется PHP 8.1 и выше, улучшены подсказки по всему фреймворку.
CakePHP теперь использует объединения типов для формализации типов многих параметров во всей платформе, обновлён PHPUnit до 10 версии, новая поддержка сопоставления перечисления типов в ORM, обеспечивающая более выразительные слои модели с улучшенной проверкой типов, добавлена поддержка HTTP-фабрик PSR17 и многое другое.
Завершилось исследование по Laravel, в котором приняло участие более 4000 разработчиков.
Большинство новостей ядра PHP подробно освещаются в серии PHP Core Roundup от PHP Foundation, мы лишь быстро по ним пробежимся:
Tim Düsterhus предлагает увеличить значение параметра cost в BCrypt по умолчанию, обозначающего алгоритмическую стоимость, которая должна использоваться, с 10 до 11 (двухкратное увеличение времени) или до 12 (четырехкратное увеличение времени).
Niels Dossche предлагает добавить в модуле DOM два новых класса: HTMLDocument и XMLDocument.
Класс HTMLDocument добавит поддержку разбора и сериализации HTML5-документов в соответствии со спецификацией.
Класс XMLDocument будет служить современной альтернативой классу DOMDocument, который сохраняется для совместимости.
Эти новые классы также обеспечат более устойчивый к злоупотреблениям API для загрузки документов.
Существующие классы DOM в глобальном пространстве имён получат псевдоним в новом пространстве имён DOM, так что новая реализация будет использоваться по умолчанию.
Дмитрий Стогов предлагает новую реализацию Just-in-Time компилятора, основанную на собственном фреймворке Дмитрия Intermediate Representation.
Основной плюс нового подхода в том, что исходный код PHP освободится от низкоуровневых деталей JIT-компиляции. Теперь интерпретатор будет формировать так называемое промежуточное представление, которое вышеупомянутый фреймворк превратит в ассемблерный код с учётом процессорной специфики. Также новый JIT позволит в будущем применить дополнительные оптимизации (видимо, уже на стороне фреймворка) для получения более эффективного машинного кода. Минус же состоит в более долгой JIT-компиляции.
Изначально Дмитрий собирался оставлять обе версии JIT, но, судя по обсуждению в PR, многие не против просто поменять старую на новую и не париться с поддержкой двух компиляторов.
RFC был отклонён.
Основная проблема – суффикс не будет работать в Windows. Чтобы избежать больших проблем из-за незначительного изменения, многие проголосовали против.
emreyarligan/enum-concern – Пакет для удобной работы с перечислениями на основе коллекций Laravel.
hyperf/hyperf – Корутинный фреймворк на основе Swoole, ориентированный на скорость и гибкость.
loupe-php/loupe – Полнотекстовая поисковая система, основанная только на PHP и SQLite, с токенизацией, стеммингом, допуском опечаток, фильтрами и поддержкой геопозиционирования.
TomasVotruba/lines – CLI-инструмент, запускаемый в любом месте, для быстрого измерения размера PHP-проектов.
Chemaclass/bashunit – Минималистичная библиотека для тестирования bash-скриптов.
laminas/laminas-text – Вы когда-нибудь хотели получить прикольный текстовый баннер в формате ASCII?
espocrm/espocrm – Развитая CRM с открытым исходным кодом, построенная на PHP.
Can I PHP? — Быстрая проверка того, в какой версии PHP появился тот или иной функционал.

Нажимая «Подписаться» я даю согласие на обработку персональных данных.
Мы заботимся о ваших данных и не будем злоупотреблять доверием.