Подборка свежих новостей, инструментов, видео и материалов из мира PHP.
Приятного чтения!
🐛 Выпуски с исправлениями ошибок вышли по расписанию.
В Composer исправлена уязвимость CVE-2024-24821, при определённых условиях выполнение произвольного кода может привести к локальному повышению привилегий пользователя, обеспечить горизонтальное перемещение или выполнение вредоносного кода.
Опубликованы результаты за 2023 год. По итогам получился срез данных: на каких версиях PHP сидят в командах, какой фреймворк выбирают для рабочих проектов, а какой для личных, как относятся к ИИ-инструментам для разработки, кого считают человеком года и многие другие аспекты. Опрос помогают составлять и распространять ребята, которые развивают городские и региональные PHP-сообщества, а также руководят каналами и подкастами про PHP.
Ознакомьтесь также с результатами за 2022, 2021 и 2020 годы.
Релизы, которые делают инструменты более тонкими и эффективными, являются кульминацией более чем десятилетней напряжённой работы десятков участников и сопровождающих Doctrine.
Первый стабильный выпуск инструмента для автоматического обновления и рефакторинга включает в себя новую конфигурацию Zen, новую команду custom-rule, автоматизированные наборы PHP и упрощённую интеграцию с новыми проектами.
Регулярный обзор использования различных версий PHP основан на данных,
которые клиенты отправляют на сайт packagist.org (например, при выполнении
команды composer update).
Вот, вкратце, как изменилось распределение использования за последние шесть месяцев:
В этой версии атрибуты PHP 8 теперь используются вместо аннотаций PHPDoc и прекращено использование менее необходимых функций.
Большинство новостей ядра PHP подробно освещаются в серии PHP Core Roundup от PHP Foundation, мы лишь быстро по ним пробежимся:
PHP ищет трёх инженеров для работы над выпуском грядущей ветки PHP 8.4. Кандидаты должны взять на себя обязательства на срок 3,5 года и обладать хорошими знаниями PHP, Git и C.
Заявки принимаются до 31 марта.
Сейчас фонд спонсирует 10 инженеров для работы над ядром и инфраструктурой PHP, получает спонсорскую помощь от крупных PHP-компаний и получил инвестиции от фонда, поддерживаемого правительством Германии.
На 2024 год группа фонда запланировала несколько значительных проектов, включая новый инструмент для установки модулей PHP, аудит безопасности и обновление документации.
Роман Пронский – операционный менеджер фонда, спонсируемый JetBrains. Посмотрите его доклад на Laracon EU, чтобы узнать больше о фонде:
PHP Foundation запустил экспериментальные обсуждения как прямой ответ на запрос сообщества о более открытой и доступной платформе для общения.
Вы можете делиться мыслями и идеями без технической реализации, в отличие от технических списков рассылок PHP. Идеи также могут быть не связаны напрямую с исходным кодом.
Не стесняйтесь обращаться к руководству фонда или разработчикам.
Хуки стали одним из самых больших и обсуждаемых RFC в PHP за последние несколько лет. После обсуждения авторы предложения, Larry Garfield и Ilija Tovillo, существенно обновили детали.
Некоторые заметные изменения:
$field было удалено.$foo => выражение было удалено. Теперь допустимыми сокращениями являются:1public string $foo {2 get => оценивается в значение;3 set => присваивает это значение;4}
=>) теперь означает «записать это значение вместо». Версия без сокращения (set { }) всегда
возвращает void, поэтому вам придётся присваивать значение самостоятельно.Сейчас объекты cURL по-прежнему являются непрозрачными типами для хранения и управления базовыми типами libcurl и не предлагают никаких API для использования авторами скриптов.
Sara Golemon предлагает добавить ООП-интерфейсы в модуль cURL и четыре новых исключения.
1try {2 (new \CurlHandle)->setOpt(YOUR_VOTE, true)->exec();3} catch (\CurlHandleException $ex) {4 assert(false);5}
В настоящее время использование 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) {} // Всё в порядке
В PHP 8.4 появится новая функция request_parse_body(), чтобы вывести существующую функциональность на
пользовательский уровень и использовать её для других HTTP-методов, например, PUT и PATCH.
В PHP 8.4 появятся две новые функции: http_get_last_response_header(), которая будет выводить ту
же информацию, что и переменная $http_response_header, и http_clear_last_response_header() для очистки последних
заголовков.
В 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!
Нажимая «Подписаться» я даю согласие на обработку персональных данных.
Мы заботимся о ваших данных и не будем злоупотреблять доверием.