Декабрь 2023

Декабрь 2023

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

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

Новости

Вышли PHP 8.1.27, PHP 8.2.14 и PHP 8.3.1

Выпуски с исправлением ошибок вышли по расписанию.

⛔️ Ветка PHP 8.1 прекратила активную поддержку и будет получать только обновления с исправлениями безопасности.

Вышел PhpStorm 2023.3

В этом большом обновлении представлена официальная версия AI Assistant, добавлена поддержка Pest и PHP 8.3, улучшена поддержка Symfony, улучшен интерфейс и многое другое.

Вышел Xdebug 3.3.0

В этом выпуске добавлена поддержка PHP 8.3, Flame-графиков и управляющих сокетов.

Вышел FrankenPHP v1.0

Современный сервер PHP-приложений, написанный на Go, позволяет создать PHP-сервер с помощью всего одной команды.

Будущее PHP_CodeSniffer

Основной разработчик CodeSniffer решил отказаться от проекта, но, к счастью, видный член сообщества, Juliette Reinders Folmer, перенесла разработку в новую организацию, PHPCSStandards. Работа над инструментом будет продолжена в репозитории PHPCSStandards/PHP_CodeSniffer.

Имя пакета composer пока не изменится; нет необходимости менять ваши зависимости.

Juliette и соавторы уже выпустили PHP_CodeSniffer 3.8.0 с множеством улучшений.

PHP Core

Большинство новостей ядра PHP подробно освещаются в серии PHP Core Roundup от PHP Foundation, мы лишь быстро по ним пробежимся:

📣 RFC: #[NotSerializable]

Max Semenik предлагает добавить новый атрибут #[NotSerializable] для предотвращения сериализации класса. Это может помочь писать меньше кода и лучше анализироваться статическими анализаторами:

1#[NotSerializable]
2class MyClass
3{
4}
5 
6serialize(new MyClass()); // Exception: Serialization of 'MyClass' is not allowed

📣 RFC: Policy Repository

В настоящее время политики в отношении голосования по RFC, процесса выпуска, классификации безопасности и рекомендаций по именованию хранятся в разных местах.

Derick Rethans предлагает создать новый Git-репозиторий, чтобы собрать все политики в одном месте.

📊 RFC: Improve callbacks in ext/dom and ext/xsl

Niels Dossche предлагает разрешить методам XSLTProcessor::registerPHPFunctions() и DOMXPath::registerPhpFunctions() использовать тип callable.

RFC: Final anonymous classes

Отчасти из-за сложности постановки вопроса RFC был отклонён.

После получения обратной связи Daniil Gentili выбрал основное направление и предложил новую версию RFC: сделать все анонимные классы по умолчанию окончательными, предоставить необязательное ключевое слово open, чтобы сделать их неокончательными (как в Kotlin, new open class {}).

RFC: Change how JIT is disabled by default

PHP 8.4 будет поставляться с отключенным по умолчанию JIT, за счёт установленной опции opcache.jit=disable, а значение опции jit_buffer_size по умолчанию будет увеличено до 64.

В настоящее время JIT работает в режиме tracing, но по умолчанию отключён с помощью опции opcache.jit_buffer_size=0.

🫣 new MyClass()->method() без скобок!

Валентин Удальцов реализовал обращение к объектам, созданным через new, не оборачивая их в скобки. Во избежание неоднозначности это будет работать только при наличии скобок аргументов конструктора. Поддерживаются также динамические имена классов и анонимные классы.

Предложение ещё не оформлено в RFC.

Новый PECL появится в 2024 году

PHP Foundation собирается пересмотреть способ установки модулей в PHP.

В настоящее время модули распространяются с помощью устаревшего сайта pecl.php.net и инструмента pecl. Цель состоит в том, чтобы предоставить современную альтернативу, которая будет проще в использовании как для пользователей, так и для разработчиков модулей.

Инструменты

  • staabm/phpstan-todo-by – Инструмент, позволяющий оставлять комментарии todo с датами истечения срока действия. Пока не выяснилось, что существуют языки программирования, такие как Gleam, которые предоставляют функцию todo в качестве языковой функции.

  • spatie/image v3 – Управляйте изображениями с помощью выразительного API. V3 больше не зависит от league/glide.

  • bpolaszek/bentools-etl – Библиотека ETL (Extract / Transform / Load) с принципами SOLID + почти полное отсутствие зависимостей.

  • samdark/php-fpm_tuner – Скрипт, который помогает настроить конфигурацию PHP-FPM на основе доступной памяти, ядер процессора и количества памяти, потребляемой воркерами.

  • super-linter/super-linter – Комбинация линтеров, которую можно установить как GitHub Action. Это может быть полезно, если у вас проекты, использующие разные языки.

  • gherkins/regexpbuilderphp – Человекочитаемый конструктор регулярных выражений.

  • maximal/taran – Простой инструмент для нагрузочного тестирования веб-приложений.

  • serversideup/docker-php – Готовые к продакшену образы Docker для PHP.

  • OrbStack – Лёгкая альтернатива Docker Desktop.

  • mnapoli/sqlite-s3 – Бессерверная база данных для разработчиков: SQLite, поддерживаемая S3.

  • typhoon-php/overloading – Реализация функции перегрузки недостающих методов в PHP.

Laravel

Yii

  • Вышел yiisoft/db-migration 1.0

    Первый стабильный релиз миграций на базе yiisoft/db.

    Из коробки поддерживаются следующие СУБД:

    • MSSQL 2017, 2019, 2022,
    • MySQL 5.7–8.0,
    • MariaDB 10.4–10.9,
    • Oracle 12c–21c,
    • PostgreSQL 9.6–15,
    • SQLite 3.3 и выше.

    Пакет предоставляет возможность работы с миграциями как через консоль Yii или Symfony, так и через отдельную независимую утилиту.

  • Вышел yiisoft/injector 1.2

    Пакет теперь может работать без контейнера, для работы теперь не требуются никакие зависимости.

Более подробно новости Yii освещаются в канале «Хроники Yii3».

Symfony

Статьи

Видео

Сергей Пантелеев
Релиз-менеджер PHP 8.2
Роман Пронский
Администратор PHP Foundation
Краткий дайджест в нашем Telegram
Ещё больше новостей в блоге компании JetBrains
PHP-дайджест в видео формате на канале CutCode
Рассылка PHP-дайджестов
Подпишитесь на рассылку, чтобы не пропустить новый выпуск

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

Мы заботимся о ваших данных и не будем злоупотреблять доверием.