Февраль-Март 2024

Февраль-Март 2024

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

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

Новости

Вышли PHP 8.2.16 и PHP 8.3.3

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

❗️ Вышел Composer 2.7

В Composer исправлена уязвимость CVE-2024-24821, при определённых условиях выполнение произвольного кода может привести к локальному повышению привилегий пользователя, обеспечить горизонтальное перемещение или выполнение вредоносного кода.

Итоги ежегодного опроса PHP-сообщества

Опубликованы результаты за 2023 год. По итогам получился срез данных: на каких версиях PHP сидят в командах, какой фреймворк выбирают для рабочих проектов, а какой для личных, как относятся к ИИ-инструментам для разработки, кого считают человеком года и многие другие аспекты. Опрос помогают составлять и распространять ребята, которые развивают городские и региональные PHP-сообщества, а также руководят каналами и подкастами про PHP.

Ознакомьтесь также с результатами за 2022, 2021 и 2020 годы.

Вышли Doctrine ORM 3 и DBAL 4

Релизы, которые делают инструменты более тонкими и эффективными, являются кульминацией более чем десятилетней напряжённой работы десятков участников и сопровождающих Doctrine.

Вышел Rector 1.0

Первый стабильный выпуск инструмента для автоматического обновления и рефакторинга включает в себя новую конфигурацию Zen, новую команду custom-rule, автоматизированные наборы PHP и упрощённую интеграцию с новыми проектами.

Статистика версий PHP: Январь 2024

Регулярный обзор использования различных версий PHP основан на данных, которые клиенты отправляют на сайт packagist.org (например, при выполнении команды composer update).

Вот, вкратце, как изменилось распределение использования за последние шесть месяцев:

  • PHP 7.* – 20.3% (29.7% в 2023)
  • PHP 8.* – 78.2% (69% в 2023)

Вышел PHPUnit 11

В этой версии атрибуты PHP 8 теперь используются вместо аннотаций PHPDoc и прекращено использование менее необходимых функций.

PHP Core

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

Релиз-менеджеры PHP 8.4

PHP ищет трёх инженеров для работы над выпуском грядущей ветки PHP 8.4. Кандидаты должны взять на себя обязательства на срок 3,5 года и обладать хорошими знаниями PHP, Git и C.

Заявки принимаются до 31 марта.

PHP Foundation: Отчёт о прозрачности за 2023 год

Сейчас фонд спонсирует 10 инженеров для работы над ядром и инфраструктурой PHP, получает спонсорскую помощь от крупных PHP-компаний и получил инвестиции от фонда, поддерживаемого правительством Германии.

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

Роман Пронский – операционный менеджер фонда, спонсируемый JetBrains. Посмотрите его доклад на Laracon EU, чтобы узнать больше о фонде:

Добро пожаловать в обсуждения PHP Foundation!

PHP Foundation запустил экспериментальные обсуждения как прямой ответ на запрос сообщества о более открытой и доступной платформе для общения.

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

Не стесняйтесь обращаться к руководству фонда или разработчикам.

📣 RFC: Property hooks

Хуки стали одним из самых больших и обсуждаемых RFC в PHP за последние несколько лет. После обсуждения авторы предложения, Larry Garfield и Ilija Tovillo, существенно обновили детали.

Некоторые заметные изменения:

  • Как было отмечено некоторое время назад, $field было удалено.
  • Сокращение $foo => выражение было удалено. Теперь допустимыми сокращениями являются:
1public string $foo {
2 get => оценивается в значение;
3 set => присваивает это значение;
4}
  • Сокращение set (с =>) теперь означает «записать это значение вместо». Версия без сокращения (set { }) всегда возвращает void, поэтому вам придётся присваивать значение самостоятельно.
  • Добавлен FAQ о подходе, ориентированном на свойства, а не на методы.
  • Добавлен пункт FAQ, объясняющий, почему ключевое слово «virtual» не может быть использовано.

📣 RFC: Add OOP methods to Curl objects

Сейчас объекты cURL по-прежнему являются непрозрачными типами для хранения и управления базовыми типами libcurl и не предлагают никаких API для использования авторами скриптов.

Sara Golemon предлагает добавить ООП-интерфейсы в модуль cURL и четыре новых исключения.

1try {
2 (new \CurlHandle)->setOpt(YOUR_VOTE, true)->exec();
3} catch (\CurlHandleException $ex) {
4 assert(false);
5}

📊 RFC: Deprecate implicitly nullable parameter types

В настоящее время использование null в качестве значения по умолчанию для параметра функции разрешено и не приводит к ошибке, даже если тип параметра и не является nullable.

Более того, существует небольшое несоответствие в разрешении необязательных параметров перед обязательными. Например, следующая сигнатура является допустимой:

1function foo(T1 $a, T2 $b = null, T3 $c) {}

Máté Kocsis и Gina Peter Banyard предлагают отказаться от таких объявлений и требовать явных пометок nullable. Это изменение, ломающее обратную совместимость, но переход довольно прост и может быть автоматизирован.

1function foo(T $var = null) {} // Ошибка уровня E_WARNING, если RFC будет принят
2function foo(?T $var = null) {} // Всё в порядке

RFC: Final by default anonymous classes

RFC: RFC1867 for non-POST HTTP verbs

В PHP 8.4 появится новая функция request_parse_body(), чтобы вывести существующую функциональность на пользовательский уровень и использовать её для других HTTP-методов, например, PUT и PATCH.

RFC: Add http_(get|clear)_last_response_headers() function

В PHP 8.4 появятся две новые функции: http_get_last_response_header(), которая будет выводить ту же информацию, что и переменная $http_response_header, и http_clear_last_response_header() для очистки последних заголовков.

RFC: Multibyte for ucfirst, lcfirst functions, mb_ucfirst mb_lcfirst

В PHP 8.3 появятся новые функции: mb_ucfirst и mb_lcfirst.

Инструменты

  • php-static-analysis/attributes – Атрибуты, используемые для статического анализа.

    Идея, появившаяся в одном из обсуждений в Twitter, теперь получила достойную реализацию, позволяя указывать метаданные типов для функций и классов в атрибутах PHP 8 вместо тегов PHPDoc.

  • typhoon-php/typhoon – Бескомпромиссная статическая рефлексия для PHP с поддержкой phpDoc-типов и резолвингом дженериков.

  • xepozz/internal-mocker – Инструмент для моков внутренних функций и классов PHP.

  • coollabsio/coolify – Альтернатива Heroku, Netlify и Vercel с открытым исходным кодом и возможностью самостоятельного хостинга.

  • opencodeco/phpctl – Среда разработки для PHP на основе Docker (контейнеров).

  • hydephp/hyde – Генератор статических сайтов, использующий мощь Laravel и простоту Markdown.

  • swoole/phpy – Библиотека, позволяющая использовать функции и библиотеки Python в PHP или использовать пакеты PHP в Python.

  • SRWieZ/thumbhash – Реализация ThumbHash в PHP, позволяющая генерировать уникальные, человекочитаемые идентификаторы из файлов изображений.

  • rryqszq4/ngx-php – Встроенный модуль языка PHP для веб-сервера NGINX. Согласно тестам, на данный момент это самый быстрый способ запуска PHP – быстрее, чем Swoole, RoadRunner и FrankenPHP.

  • crazywhalecc/static-php-cli – Этот инструмент позволяет создавать автономные исполняемые файлы PHP для Linux, macOS, ~~~~FreeBSD, а с последним обновлением – и для Windows!

Symfony

Laravel

Статьи

Видео

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

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

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