Подборка свежих новостей, инструментов и материалов из мира PHP.
Приятного чтения!
Этот дайджест подготовлен совместно с Insolita. Если понравился выпуск, плюсаните пост, пожалуйста.
⚡️ Новости
-
The PHP Foundation Update, January 2022
Фонд PHP стартовал свою работу в конце ноября и уже есть первые результаты. Получены и обрабатываются заявки на спонсорство от core-разработчиков, идет подготовка необходимых документов.
Обзоры по работе фонда будут публиковаться каждый месяц, можно подписаться на твиттер @thephpf, чтобы следить за новостями.
-
PHP 8.0.15, PHP 8.1.2
Багфиксы для актуальных веток PHP.
-
Drupal покинули группу PHP-FIG
Зато теперь используют PHPStan в ядре.
-
❌ [RFC] User Defined Operator Overloads
Предложение добавить перегрузку операторов в PHP ожидаемо не прошло голосование.
Автор RFC опубликовал довольно интересную инструкцию Как сделать RFC для PHP с пачкой неочевидных советов.
-
[Disussion] Trait expects interface
Интересное обсуждение поднял SerafimArts с предложением добавить поддержку ключевого словаexpects
для трейтов, как указатель на то, что класс использующий трейт, должен имплементировать определенный интерфейс.Скрытый текстtrait LoggerTrait expects LoggerInterface { // ... } class MyService { use LoggerTrait; // Fatal Error: Class MyService expects LoggerInterface to be implemented } class MyService2 implements LoggerInterface { use LoggerTrait; // OK }
Это ужебыло в симпсонахесть в Psalm.
???? Инструменты
- thephpleague/flysystem 3.0.0 – Мажорное обновление популярной библиотеки для работы с файловыми системами. Блогпост в поддержку
- spatie/ignition – Обновлена библиотека для отображения страниц ошибок для отладки, многим знакомая по Laravel, но теперь не зависит от фреймворка и может быть использована в любых приложениях. Блогпост с обзором изменений.
- chevere/xr – Отладочный сервер на ReactPHP, вдохновлённый идеей spatie/ray, но вместо десктопного приложения просто cli-команда для запуска. Видеодемо.
- marijnvanwezel/reflection-file — Небольшая библиотека позволяет получить рефлексию по пути файла, а не по классу. Но если нужно больше возможностей, стоит обратить внимание на Roave/BetterReflection
- Doctrine ORM 2.11 — С подержкой перечислений, виртуальных столбцов, read-only свойств, вложенных атрибутов и другого.
- viewi/viewi — Мощный инструмент для создания реактивных приложений используя только PHP и HTML. Теперь есть интеграция с Symfony.
- JustSteveKing/php-sdk, Sammyjo20/Saloon — Две похожих библиотеки с одинаковой идеей: упростить создание SDK для сервисов или организовать доступ к разным API в едином стиле.
- AliSaleem27/wordle-cl — CLI-версия популярной игры Wordle для отгадывания пятибуквенных слов.
- flow-php/etl — Реализация паттерна Extract Transform Load для PHP. Тред от автора.
-
staabm/phpstan-dba — Расширение для PHPStan, которое проверяет валидность SQL-запросов в
PDO
,mysqli
иdoctrine/dbal
. Демо.
Symfony
- Новый способ для старта Symfony-проекта
- Доступна сертификация по Symfony 6 — 90 минут на 75 вопросов из 15 тем.
- norberttech/static-content-generator-bundle — Генерирует статическую html-версию из вашего приложения на Symfony.
- Using custom PHP attributes for registering and configuring Symfony Messenger handlers
- JSON Columns and Doctrine DBAL 3 Upgrade
- Fast, Smart Flex Recipe Upgrades with recipes:update
- Неделя Symfony #786 (17-23 января 2022)
Laravel
- 9 февраля пройдёт бесплатная онлайн-конференция Laracon Online
Конференция обычно платная, но ближайшая Laracon Online Winter будет бесплатной с трансляцией на YouTube.
- ???????? Laravel 9 — Что нового?
- ajimoti/roles-and-permissions – Простая библиотека для управления ролями и полномочиями.
- timothepearce/laravel-quasar – Библиотека предоставляет API для создания и управления проекциями данных (агрегаций, статистики, временных рядов).
- LaravelDaily/Laravel-Roadmap-Learning-Path — Систематизированная подборка материалов для изучения Laravel от простого к сложному.
- Building an API using TDD in Laravel
- Efficient Pagination Using Deferred Joins
- Cоздание фабрик и seeders при связях между моделями
???? Статьи
- PHP in 2022 — Традиционный обзор экосистемы от Brent Roose.
- Как подменить один класс из vendor без форков — В статье правится автозагрузка в composer.json. Как вариант, можно еще использовать патчи с помощью cweagans/composer-patches.
- Как делать микросервисы на PHP с помощью ecotoneFramework/ecotone и RabbitMQ.
-
Доступ к приватным свойствам в PHP — Вместо рефлексии и доступа через
Closure::bind
еще можно преобразовать к массиву и это будет даже быстрее. - PHP на стероидах: Swoole in production
- Всё о fsync
- ???????? Beer::PHP ????: DateTimeImmutable vs DateTimeInterface
???? Сообщество
- ???? PHP in 7 minutes
Подписывайтесь на Telegram-канал PHP Digest.
Этот дайджест подготовлен совместно с Insolita. Если вам понравился выпуск, подпишитесь на Юлию в твиттере и поставьте плюс в пост, пожалуйста.
Заметили ошибку или опечатку? Сообщите в личку хабра или телеграм.
Прислать ссылку можно через форму или просто напишите мне в телеграм.
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 219
Комментарии (8)
SerafimArts
24.01.2022 19:37+12[Disussion] Trait expects interface
…
Это ужебыло в симпсонахесть в Psalm.*Где-то радуется один Валентин* =)
Но если без шуток, то да, есть. Но psalm, во-первых, очень часто глючит на сложных конструкциях и поддерживать level 1, обмазавшись всеми кастомными типами — это боль. Во-вторых, отстаёт от трендов и какая-нибудь конструкция с кастом к анонимке
$fun(...)
может просто вывести его из строя (кажется уже починили, но всё же), аarray_values([...$iter])
до сих пор хайлайтится, т.к. считает что распаковка без ключей работает (это просто что я сходу вспомнил). И, в-третьих, является вспомогательным декларативным инструментом, на который не все обращают внимание.Так что перенос этой штуки из псалма на уровень языка несёт несколько профитов:
- Будет почти гарантированная поддержка в IDE.
- Сам язык зафаталится и скажет, что трейт Х — часть типа, а не просто набор функций.
- Раз у нас уже есть трейты, и от них никуда не деться, то их начнут реже применять неправильно (а потом плеваться от них) и они станут альтернативной реализацией дефолтных методов у интерфейсов (я про которые из джавы).
- Ну и это не аффектит скорость выполнения, т.к. линковка — стадия компиляции, а не интерпретации.
QeqReh
25.01.2022 09:15+1Доступ к приватным свойствам в PHP — Вместо рефлексии и доступа через
Closure::bind
еще можно преобразовать к массиву и это будет даже быстрее.Можно, но это не значит что так надо делать на продуктовом коде.
Stalinko
26.01.2022 13:44Открыл статью про Laravel 9. Первая фраза: "Laravel 9 вышла 8 февраля 2022 года". Задумался... Даже календарь перепроверил.
mnogokotin
годно )