PHP Дайджест № 208 (12 – 26 июля 2021)
Фото: Noriko Yamamoto.
Подборка свежих новостей и материалов из мира PHP. В выпуске: первая бета PHP 8.1 — список новых возможностей и статус последних предложений; в PHP 8.1 будут readonly-свойства, first-class callable, и new в инициализаторах кроме свойств и констант класса. Nikolas Grekas предложил сделать пересечения типов nullable. А также другие новости, порция полезных инструментов, статьи и видео.
Приятного чтения!
Новости
PHP 8.1.0 beta 1
С первым бета-релизом заканчивается фаза активной разработки, а значит список новых возможностей и изменений в ветке 8.1 можно считать финальным. (За исключением nullable пересечений типов). Следующая бета ожидается 5 августа.Картинка Peter Kokot.
На прошлой неделе закончились голосования по 6 предложениям. Вот какие результаты.
- [RFC] First-class callable syntax — Принят. В PHP 8.1 можно будет получить ссылку на любую функцию:
Подробнее было в подкасте PHP Internals News #92 с Никитой Поповым.
- [RFC] Readonly properties 2.0 — В PHP 8.1 буду readonly-свойства.
Подробнее на канале PHP Digest. - [RFC] New in initializers — Также прошел голосование. В PHP 8.1 можно будет использовать оператор new в инициализаторах.
Подробнее на канале PHP Digest.Обратите внимание, что изначально предлагалось также использовать объекты и для дефолтных значений свойств и констант класса. Но в процессе имплементации стали очевидны проблемы с десериализацией и порядком выполнения. Подробнее об этом в секции Unsupported positions.
А вот эти предложения не набрали достаточно голосов:- [RFC] Partial Function Application — не прошел, потому что слишком сложный.
- [RFC] Is_literal — мнения разделились. Марко Ocramius Пиветта, например, написал, что подобный анализ — это не дело рантайма, а задача для стат анализа.
Довольно интересные мысли есть в подкасте PHP Internals News podcast #91 с авторами RFC Craig Francis и Joe Watkins.
- [RFC] Pipe Operator v2 — не прошел, потому что не очень убедительно звучала мотивация. В то же время расширять синтаксис языка дополнительным «сахаром» мало кто хотел.
Так что пока можно использовать альтернативы на PHP. В PHP 8.1 с поддержкой first-class callable использовать их намного удобнее.
Вот, например: sebastiaanluca/php-pipe-operator
Скрытый текст$subdomain = Pipe::from('https://blog.sebastiaanluca.com') ->parse_url() ->end() ->explode('.', PIPED_VALUE) ->reset() ->get(); // "blog"
- [RFC] First-class callable syntax — Принят. В PHP 8.1 можно будет получить ссылку на любую функцию:
- Что нового будет в PHP 8.1
Вот тут классная подборка примеров PHP 8.1 «до» и «после»: PHP 8.1: before and after.Список нового в PHP 8.1- Enum они же перечисления RFC;
- First-class callable — получение ссылки на любую функцию RFC;
- Readonly свойства RFC;
- Оператор new в инициализаторахRFC;
- Новый тип
never
для возвращаемых значений RFC; - Файберы RFC;
- Финальные константы в классах RFC;
- Оператор распаковки поддерживает массивы со строковыми ключами RFC;
- Объявлено устаревшим преобразование
float
вint
, где теряется дробная часть RFC; - Интерфейс
Serializable
объявлен устаревшим RFC; - Запись восьмеричных чисел с префиксом
0o
RFC; - Ограничено использование $GLOBALS RFC.
- The State of Developer Ecosystem in 2021 | PHP
Результаты ежегодного опроса разработчиков от JetBrains. - PhpStorm 2021.2 Beta с базовой поддержкой дженериков
Совсем скоро релиз PhpStorm и в нем будет поддержка дженериков. Покрыты базовые сценарии и уже можно работать с коллекциями.
PHP Internals
[RFC] Nullable Intersection types
Вскоре после принятия RFC по пересечениям типов последовал комментарий от Nikolas Grekas (core Symfony). Он сказал, что без возможности сделать их nullable пересечения мало полезны.Формально ветка PHP 8.1 уже заморожена, но для этого предложения решили сделать исключение.
class Foo { public (X&Y)|null $bar; function setBar((X&Y)|null $bar = null): (X&Y)|null { return $this->bar = $bar; } }
На голосование также будет выдвинут вопрос о синтаксисе:
?X&Y
или(X&Y)|null
.
Инструменты
- EcotoneFramework — Интересная реализация сервисной шины для DDD, CQRS, и Event Sourcing в PHP. Работает на PHP 8+ через атрибуты, с хорошей документацией и интеграциями для Laravel и Symfony. Пример реализации CQRS.
- octoper/cuzzle — Позволяет сохранять Guzzle-запросы в виде команд cURL для дальнейшей отладки или логирования.
- Codeception/robo-paracept — Параллельный запуск тестов Codeception.
- nuwber/rabbitevents — Пакет для коммуникации между независимыми веб-сервисами через события. Под капотом Laravel Queue, Laravel Events, мидлвари и RabbitMQ.
- i18n Ally — Плагин для PhpStorm для удобной работы со строками переводов. Автоматически настраивается для Laravel и Symfony, можно вручную настроить для Yii, CodeIgniter и CakePhp. Есть демо со стрима PHP-Дайджеста.
- Активно разрабатывается Cycle ORM 2.0 — Доступны новые фичи: композитные ключи, кастомные коллекции, типизация в ORM и сущностях. Подробнее об изменениях и о том, как уже попробовать, в этом гисте.
Symfony
Laravel
Yii
- Хроники Yii 3 — Команда Yii запустила канал в телеграме, где подробно рассказывает о процессе разработки 3й версии фреймворка.
- Релизы пакетов Yii 3:
- yiisoft/data-response — Автоматическое преобразование данных в PSR-7 ответ, с использованием одного из форматеров (JSON, XML или HTML), а также PSR-15 мидлвари.
- yiisoft/view — Рендеринг представлений, включает в себя абстракцию над шаблонизаторами с поддержкой иерархии «шаблон / представление / вложенное представление». Также yiisoft/yii-view для веб-специфичных штук и yiisoft/view-twig для твига.
- yiisoft/mailer и yiisoft/mailer-swiftmailer для работы с почтой.
Статьи
Аудио/Видео
Сообщество
Подписывайтесь на Telegram-канал PHP Digest.
Если вам понравился дайджест, поставьте, пожалуйста, ему плюс.
Заметили ошибку или опечатку? Сообщите в личку хабра или телеграм.
Прислать ссылку можно через форму или просто написав мне в телеграм.
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 207