Февраль 2023

Февраль 2023

Подборка свежих новостей, инструментов, видео и материалов из мира PHP.

Приятного чтения!

Новости

Вышли PHP 8.0.28, PHP 8.1.16 и PHP 8.2.3

Это обновления безопасности с исправлениями CVE-2023-0568, CVE-2023-0567 и CVE-2023-0662.

Если вы всё ещё используете PHP 7.4, в репозитории Remi есть обновления с исправлениями безопасности. Однако не забывайте, что этот репозиторий - проект, который делается по мере сил и зависит от того, сколько свободного времени Remi может ему уделять. Это означает, что нет никаких гарантий относительно будущих обновлений, так как он предназначен только для того, чтобы дать пользователям больше времени для перехода на новую версию.

Вышел Laravel 10

Одним из основных изменений, объявленных командой, было добавление деклараций типов во всём наборе пакетов Laravel. Это привело к проблемам у пользователей при работе с заглушками контроллеров. И через некоторое время команда Laravel решила полностью убрать декларации типов из них.

Вышел PHPUnit 10

После двух лет разработки Sebastian Bergmann и команда PHPUnit объявили о выходе крупного релиза.

Этот релиз для PHPUnit - то же самое, что PHP 7 для PHP: масштабная чистка, рефакторинг и модернизация, которая закладывает основу для будущего развития.

В нём появились атрибуты, статические провайдеры данных, меньше магии уведомления об ошибках и более простая система событий.

Одним из внутренних изменений в этом выпуске является новая система событий, которая затрагивает разработчиков расширений PHPUnit.

Грядет большой релиз для стиля кодирования PER

Стиль кодирования PER призван облегчить чтение кода и избавить от вопросов типа «нужно ли добавить пробел?» или «должно ли это утверждение быть в отдельной строке?», позволяя тратить время на то, что действительно важно.

PER - это скользящий документ, что означает, что вместо создания нескольких PSR, команда будет помечать несколько версий.

Версия 1.0.0 была копией PSR-12. Следующая версия будет направлена на обновление спецификации для включения последних возможностей PHP и исправление любых проблем.

Вы можете оставить свой отзыв на вкладке GitHub Issues по адресу https://github.com/php-fig/per-coding-style.

PHP Core

Большинство новостей ядра PHP подробно освещаются в серии PHP Core Roundup от PHP Foundation, мы лишь быстро по ним пробежимся:

RFC: Asymmetric Visibility

Ilija Tovilo и Larry Garfield получили необходимые отзывы и, возможно, представят пересмотренную версию этого RFC, а пока они сосредоточатся на предложении добавить хуки и аксессоры для свойств.

RFC: Readonly amendments

1class Foo { public function __construct(
2 public readonly DateTime $bar,
3 ) {}
4 
5 public function __clone()
6 {
7 $this->bar = clone $this->bar;
8 // Это приведёт к фатальной ошибке в PHP <8.2
9 // и будет работать в PHP 8.3+
10 }
11}
12 
13$foo = new Foo(new DateTime());
14$foo2 = clone $foo;

📣 RFC: Path to Saner Increment/Decrement operators

George Peter Banyard предлагает сделать поведение операторов ++ и -- согласованным.

📣 RFC: Pass Scope to Magic Accessors

Nicolas Grekas и Ilija Tovilo предлагают передавать область видимости в магические аксессоры, чтобы сделать ее получение тривиальным.

В ходе обсуждения участники сообщества предложили добавить отдельную функцию, которая корректно возвращает область видимости, так что авторы RFC могут склониться к этой идее.

📊 RFC: Typed class constants

Benas Seliuginas и Máté Kocsis предлагают разрешить объявлять типы для содержимого классов и интерфейсов.

Вот несколько примеров кода, демонстрирующих проблему и то, как типизированные константы могут помочь:

1interface I {
2 const TEST = "Test"; // Мы можем наивно предположить, что I::TEST - это строка.
3}
4 
5class Foo implements I {
6 const TEST = []; // Но это может быть массив...
7}
8 
9class Bar extends Foo {
10 const TEST = null; // Или null
11}

📣 RFC: Working With Substrings

Thomas Hruska реализовал множество функций для улучшения качества жизни в PHP и это первый RFC, который привносит некоторые из них в ядро для оптимизации работы с подстроками.

PhpStorm

Уже сейчас вы можете попробовать новые функции из предстоящего крупного релиза, такие как: - Возможность запуска PHP-скриптов на 3v4l.org. - Улучшение производительности, включая общие индексы для популярных пакетов PHP. - Множество улучшений в новом пользовательском интерфейсе. - Пользовательские проверки поиска и замены на основе Regexp.

  • Command Line Launcher – Плагин для PhpStorm, который помогает запускать и управлять командами терминала. С его помощью можно запускать серверы, Docker или даже выполнять команды на удалённом сервере.

Инструменты

  • crwlrsoft/crawler 1.0 – Библиотека для быстрой разработки краулеров и скреперов.

  • olvlvl/composer-attribute-collector – Удобный и практически незатратный способ получения целей атрибутов PHP 8.

  • brick/json-mapper – Отображает данные JSON в сильно типизированные DTO PHP.

  • boxblinkracer/phpunuhi – Простой композитный фреймворк для проверки и управления переводами.

  • markrogoyski/itertools-php – Пакет предоставляет огромный набор функций для работы с итерируемыми коллекциями. Его главное отличие от других библиотек коллекций, таких как Laravel или Doctrine collections, заключается в том, что он не преобразует итерируемые коллекции в массивы. Это означает, что он должен быть гораздо более эффективным с точки зрения использования памяти при работе, например, с генераторами.

  • Crell/mastobot – Простой бот для составления личного расписания для аккаунтов Mastodon.

  • paratestphp/paratest – Вышла версия 7.0 поддержки параллельного тестирования PHPUnit.

  • TheDragonCode/benchmark – Простой инструмент для сравнения времени выполнения двух разных блоков кода.

  • parsica-php/parsica – Конструктор парсеров с необычным синтаксисом:

1$parser = between(char('{'), char('}'), atLeastOne(alphaChar()));
  • Sammyjo20/Saloon 2.0 – Идея этого пакета заключается в том, чтобы упростить создание SDK для сервисов или организовать доступ к различным API в едином стиле.

  • yiisoft/validator – Мощный пакет валидаторов из фреймворка Yii, который можно использовать и самостоятельно.

Laravel

Symfony

Статьи

Аудио и видео

События

Сергей Пантелеев
Релиз-менеджер PHP 8.2
Роман Пронский
Администратор PHP Foundation
Краткий дайджест в нашем Telegram
Ещё больше новостей в блоге компании JetBrains
PHP-дайджест в видео формате на канале CutCode
Рассылка PHP-дайджестов
Подпишитесь на рассылку, чтобы не пропустить новый выпуск

Нажимая «Подписаться» я даю согласие на обработку персональных данных.

Мы заботимся о ваших данных и не будем злоупотреблять доверием.