Подборка свежих новостей, инструментов, видео и материалов из мира PHP.
Приятного чтения!
Этот дайджест подготовлен совместно с Insolita. Если понравился выпуск, плюсаните пост, пожалуйста.
⚡️️ Новости
- Официально начата работа над Coding style PER
Coding Style PER официально одобрен PHP-FIG и заменит PSR-12. Работы начаты в php-fig/per-coding-style.Это первый документ типа PER (PHP Evolving Recommendation), то есть «живой» стандарт. Теперь не надо будет выпускать очередной PSR-стандарт каждый раз при добавлении нового синтаксиса в PHP. Вместо этого PER будет обновляться по SemVer.
Спасибо samdark. - 2021 год в русскоговорящем PHP-сообществе
Подводим итоги 2021 года в PHP-сообществе, живая трансляция на YouTube 12 февраля 11:00 Мск/Минск, 10:00 Киев.
На стриме будут: Александр Макаров, Валентин Удальцов, Кирилл Несмеянов, Адель Файзрахманов, Дмитрий Елисеев.
- [RFC] Remove support for libmysql from mysqli
В PHP 8.2 будет убрана поддержкаlibmysql
вmysqli
. Вряд ли это кто-то заметит, потому что по умолчанию используетсяmysqlnd
. - PhpStorm 2022.1 Early Access Program
Стартовала программа раннего доступа первого мажорного релиза IDE в этом году. Каждую неделю публикуем новые бесплатные для использования билды, в которых можно первым пощупать новые фичи.Фокус релиза — багфикс и производительность, но и без новых фич не обойдется. В первом билде обновления для метадаты .phpstorm.meta.php, улучшения для редактирования Markdown и другое.
- [RFC] final class CollectionsDeque
В рамках инициативы по добавлению оптимизированных структур данных в PHP готово первое предложение.
Deque
— это двухсторонняя очередь, то есть элементы можно добавлять и удалять как в начало, так и в конец.Использовать можно везде, где были
SplQueue
илиSplDoublyLinkedList
и с ходу получить выигрыш в производительности, и уменьшить расход памяти. ТакжеDeque
актуален для долгоиграющих приложений, в которых используются большие массивы.Есть демо на WebAssembly: PHP 8.2 Deque RFC Demo.
Скрытый текст$deque = new CollectionsDeque(['first', 'second', 'third']); foreach ($deque as $offset => $value) { if ($value === 'second') { $deque->shift(); } elseif ($value === 'third') { $deque->push('fourth'); } }
🛠 Инструменты
- sj-i/php-profiler — Сэмплирующий профайлер для PHP, который реализован на чистом PHP (FFI). Можно сгенерировать флейм-диаграммы, запустить вывод трейсов в режиме команды top и другое.
- IvanGrigorov/VMValidator — Коллекция аттрибутов-валидаторов.
- mrsuh/php-var-sizeof — Функция для получения размера памяти для любой переменной и обещает более точный результат по сравнению с memory_get_usage(). Требует PHP >=7.4 с FFI.
- spiral/framework — Релиз long-running фреймворка теперь с поддержкой RoadRunner v2 и CycleORM v2.
- Chetkov/php-clean-architecture — Инструмент для измерения качества, упрощения анализа и автоматизации контроля архитектуры приложений на PHP.
- Hi-Folks/statistics — Пакет предоставляет набор разных статистических функций: медиана, мода, отклонение выборки и т.п.
- php-soap — В рамках организации разрабатываются инструменты для работы с SOAP. Встроенное в PHP расширение
ext-soap
давно не поддерживается, поэтому вместо него стоит использовать имплементации на чистом PHP: php-soap/ext-soap-engine. - williarin/wordpress-interop — Пакет на основе Doctrine/DBAL для более удобного доступа к базе Вордпресса из других приложений на PHP.
- Phel — Функциональный язык программирования, который компилируется в PHP. Является диалектом Lisp и вдохновлен Clojure.
- tuqqu/go-parser — Парсер Golang на PHP 8.1. Транслирует Golang-код в AST. Применение пока не ясно.
Symfony
- Уязвимость в Symfony и конфликт версий
В Symfony версий 5.3.14, 5.4.3 и 6.0.3 была обнаружена CSRF уязвимость и срочно выпущены патчи.Но из-за ошибки в указании версии в GitHub Advisory Database многие проекты не могли обновиться.
Спасибо chrome. - Light Kernel для приложений на symfony/console
- 4 способа правильного внедрения сервисов в Symfony — Если хотите разобраться, как работает DI в Symfony.
- Efficient JSON Streaming with Symfony and Doctrine — Как отдавать большой JSON из API на Doctrine и Symfony. Автор делает свой велосипед, но можно использовать, например, violet-php/streaming-json-encoder.
Laravel
- nicoverbruggen/phpmon — Приложение для menu bar в mac OS для управления Laravel Valet, версиями и конфигурацией PHP.
- cerbero90/eloquent-inspector — Инспектор свойств и связей Eloquent-моделей.
- glhd/laravel-dumper — Немного улучшений для
dd()
. - tonysm/importmap-laravel — Концепт использования Importmaps в Laravel. Позволяет не использовать билд-инструменты для JS, а просто импортировать нужные зависимости из npm в браузере.
- Safer Staging Environments with Blackhole Storage — Про использование движка BLACKHOLE в MySQL.
- Testing Laravel Environment Checks
- 🇷🇺 Руководство по обновлению до Laravel 9
- LaravelProTips.com — Сайт с подборкой статей и твитов.
- 📺 Laravel Worldwide Meetup: — Пара докладов про Termwind и Inertia.
- 📺 Laravel Origins: The Documentary (Trailer) — Трейлер документалки про Laravel.
- 📺 Тейлор отвечает на разные вопросы
📝 Статьи
- Долгий путь оптимизации памяти и быстродействия композера — Подробный разбор оптимизаций в Composer.
- Организация деплоя с помощью Ansible и Github Actions
- Ускоряем array_merge()
- Потоковый HTTP ответ на PHP
- Решаем проблему Supply Chain атак для экосистемы PHP — Интересный пост об инициативах ребяток из Paragon IE. Сейчас они работают над инструментом Gossamer для безопасного обновления приложений и зависимостей.
До этого они принесли
libsodium
в ядро PHP, сделали Paseto — более безопасную альтернативу JWT, и другие инструменты. - Я протестировал 4 различных сервиса сбора отчетов об ошибках для PHP: sentry.io, bugsnag.com, raygun.com, flareapp.io и выбрал Sentry.
- Статический анализ и уже выросший проект: внедрять нельзя откладывать
- 🇷🇺📺 Александр Макаров: Эффективная работа с ошибками в PHP-продукте
- 🇷🇺 Заметка на канале Пых: Поиск по нескольким словам в проекте
📣 Сообщество
- Mage-OS update January 2022 — После анонса форка Magento, Adobe одумались и обещают развивать опенсорсную Magento и не депрекейтить монолит. Но вот на своих ресурсах упоминать опенсорс версию не будут.
- PHP Russia 2022 — Прием докладов открыт до 25 апреля 2022.
Если вдруг у вас доклад не вписывается в темы на сайте, но тема всё-таки про PHP или на PHP — подавайте обязательно. Мы обожаем сюрпризы. - В PHP есть операторы с одной точкой, двумя, тремя и четырьмя. А как бы мог выглядеть с пятью?
Подписывайтесь на Telegram-канал PHP Digest.
Этот дайджест подготовлен совместно с Insolita. Если вам понравился выпуск, подпишитесь на Юлию в твиттере и поставьте плюс в пост, пожалуйста.
Заметили ошибку или опечатку? Сообщите в личку хабра или телеграм.
Прислать ссылку можно через форму или просто напишите мне в телеграм.
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 220
Автор: Роман Пронский