Дисклеймер: Нет, это не дайджест авторства Романа Пронского. К сожалению, у меня нет достоверной информации — будет ли выходить его дайджест далее.
Однако я взял на себя смелость временно продолжить дело Романа и написать новый дайджест за тот месяц, что прошел с выхода последнего.
Если Роман сможет и захочет далее продолжать свой дайджест — он сам решит, как использовать мой текст: взять в свой проект, как его часть или нет. На всякий случай я ставлю нумерацию дайджеста через дробь. Однако не претендуя при этом на продолжение оригинального проекта.
PHP
Вышли версии PHP 8.1.4, 8.0.17. Обновления в основном посвящены исправлению найденных багов.
RFC (Requests for Comments )
За прошедшее время было не так много событий вокруг RFC.
Allow null and false as stand-alone types
https://wiki.php.net/rfc/null-false-standalone-types
В этом RFC предлагается добавить в систему тайп-хинтинга PHP еще два типа: null и false. Данная возможность позволит писать примерно такой код:
class Foo { public null $nil = null; public function foo(null $v): null { /* ... */ *} } // В стандартной библиотеке достаточно много функций, возвращающих int|false или string|false // Например таких: function strpos(string $haystack, string $needle, int $offset = 0): int|false { /* ... */ *}
На всякий случай предлагается запретить декларацию типа ?null — видимо, от греха подальше 🙂
В момент, когда писалась статья, RFC находился на голосовании. Однако его принятие не вызывает никаких вопросов — результат голосования составляет 38 голосов «за» и 0 (ноль, а не null!) «против».
Undefined Variable Error Promotion
https://wiki.php.net/rfc/undefined_variable_error_promotion
Очень интересное предложение, которое фактически сводится к запрету на использование не объявленных явно переменных в PHP.
Сейчас обращение к необъявленной ранее (например через операцию присваивания) переменной производит ошибку уровня E_WARNING, после чего значением переменной становится null, а код продолжает выполняться далее, со следующей строки.
В обсуждении будущего PHP 9 Никита Попов отмечал, что такое поведение — это существенная проблема: дело в том, что ошибки могут обрабатывать хэндлеры, неявно меняющие состояние виртуальной машины PHP совершенно непредсказуемым образом, в отличие от явного выброса и явной же обработки исключения.
В данном RFC предлагается заменить ошибку уровня E_WARNING на исключение класса Error. Голосование закончено, результат весьма предсказуем: 33 «за» и 8 «против», предложение будет реализовано в PHP 9.
Sealed Classes
https://wiki.php.net/rfc/sealed_classes
Новая возможность языка, появление которой, если предложение будет принято, возможно уже в PHP 8.2
Вкратце: возможность для классов (и интерфейсов) ограничивать список своих наследников (и реализаторов). Проще, наверное, показать на примерах:
sealed class Foo permits Bar { /* ... */ } class Bar extends Foo { /* обычное наследование, без особенностей */ } class Baz extends Foo { /* фатальная ошибка этапа компиляции, наследование не разрешено */ }
sealed interface HasPrice permits Product, Service { /* ... */ } class Product implements HasPrice { /* реализация интерфейса разрешена */ } class Service implements HasPrice { /* реализация интерфейса разрешена */ } class User implements HasPrice { /* ошибка, реализация интерфейса не разрешена! */ }
Наряду с классами и интерфейсами возможностью разрешать своё использование предлагается наделить и трейты. Можно будет указать список классов, которым будет позволено включать в себя данный трейт.
Предложение находится в стадии голосования и, в целом, за его принятие уже подано голосов больше, чем за отказ.
Новости фреймворков
Symfony
-
Представлена возможность онлайн пройти экзамен и получить сертификат по Twig 3
-
Книга «Symfony: The fast track» обновлена и теперь базируется на версиях Symfony 5.4 и 6.0
-
Объявлено, что Symfony 6.1 будет требовать минимально PHP 8.1
Laravel
-
Представлен инструмент Translation Checker, позволяющий находить в вашем коде фразы, не покрытые переводами
-
Представлен пакет Telegraph, упрощающий работу с Telegram: создание ботов, работа с чатами, сообщениями и API Telegram
-
Вышел релиз инструмента Visit — клиент для просмотра HTTP-запросов и ответов в человеко-читаемом виде
Yii
Ввиду того, что сервис OpenCollective более недоступен в России, сообщество фреймворка открывает дополнительный сбор пожертвований в сервисе Boosty: https://boosty.to/yiisoft
Отмечается, что разработка фреймворка замедлится из-за резкого (примерно в 5 раз) сокращения сумм пожертвований.
Дополнительная информация может быть найдена здесь.
Инструменты и библиотеки
-
php-dry: библиотека для поиска дубликатов в вашем коде
-
sebastian/type: коллекция ValueObject-обёрток над нативными типами PHP
-
Laravel Optikey: пакет, позволяющий использовать первичные ключи типа UUID в Laravel
-
Image with text: библиотека, включающая в себя продвинутые возможности создания текста на изображениях.
Интересные статьи
Хабр
Другие источники
-
Top PHP Web Development Trends in 2022 — довольно спорная статья, утверждающая, что современные тренды в PHP это: использование версий 7.1 и 7.2 и фреймворков Laravel, CakePHP, CodeIgniter, Zend Framework.
-
PhpStorm, Docker and Xdebug 3 on PHP 8.1 in 2022 — неплохой гайд по настройке XDebug для свежей версии PHP в контейнеризованном окружении.
-
The difference between Service Classes and Traits in PHP — Andrew Savetchuk объясняет разницу между сервисами и трейтами в Laravel
-
Using PHPStan with Symfony — static analysis for better PHP code quality: туториал по использованию статического анализатора PHPStan совместно с Symfony
Подготовлено при активном участии сообщества телеграм-чата «PHP Russian Talks».
Замечания по текущему выпуску и предложения для следующего можете отправлять автору в личку или в указанный выше чат.
ссылка на оригинал статьи https://habr.com/ru/post/657873/
Добавить комментарий