Апрель 2023

Апрель 2023

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

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

Новости

Вышли PHP 8.1.18 и PHP 8.2.5

Выпуски с исправлениями ошибок вышли по расписанию.

Вышел Pest 2.0

В Pest 2 появилось множество новых возможностей, таких как повторное тестирование, профилирование медленных тестов, поддержка нового плагина arch и многое другое.

Вышел Bref 2.0

Bref позволяет с лёгкостью развёртывать PHP-приложения на бессерверной платформе AWS Lambda.

В этом обновлении упрощена настройка PHP, улучшена интеграция с Laravel, ускорено развёртывание, автоматическая загрузка секретов в переменные окружения во время выполнения, а также упрощён docker-compose.yml для локальной разработки.

Подпишитесь на рассылку Serverless PHP, чтобы получать больше материалов по этой теме.

Вышел PER Coding Style 2.0

Новая версия руководства по стилю кодирования PHP исправляет некоторые проблемы, а также обновляет руководство с учётом последних дополнений к синтаксису PHP.

Посмотрите на GitHub, чем PER CS 2.0 отличается от PSR-12.

Вышел PhpStorm 2023.1

Это первое крупное обновление PhpStorm в этом году. В нём появилась интеграция с 3v4l.org, повысилась производительность, улучшился новый пользовательский интерфейс, появился отладчик DFA для PHP и многое другое.

PHP Foundation Update, March 2023

Команда PHP Foundation объявила о возможности поддержки PHP с помощью программы GitHub Sponsors и раскрыла новую инициативу Консультативного совета.

Объявлены релиз-менеджеры PHP 8.3

По традиции, у PHP 8.3 будет два новичка-релиз-менеджера: Jakub Zelenka, разработчик ядра PHP, поддерживаемый PHP Foundation и Eric Mann. Им будет помогать ветеран-релиз-менеджер PHP 8.2 Pierrick Charron.

PHP Core

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

RFC: Arbitrary static variable initializers

PHP позволяет объявлять статические переменные внутри любых функций. Их значения выходят за пределы вызова функции и разделяются между будущими выполнениями функции.

В PHP 8.3 вы можете присвоить им любое выражение, например, результат другой функции.

1function bar() {
2 echo "вызвана функция bar()\n";
3 return 1;
4}
5 
6function foo() {
7 static $i = bar(); // В настоящее время это приводит к фатальной ошибке, но будет работать в PHP 8.3
8 echo $i++, "\n";
9}
10 
11foo();
12// вызвана функция bar()
13// 1
14foo();
15// 2
16foo();
17// 3

В качестве побочного эффекта, в PHP 8.3 будет запрещено повторное объявление статических переменных. Это исправит некоторые причуды PHP, которые вы, надеюсь, никогда не видели в реальном коде:

1function f()
2{
3 static $x = 1;
4 return $x;
5 static $x = 2;
6}
7echo f();

Если вы ожидали, что второе статическое объявление окажется недоступным, то, к сожалению, ошиблись: https://3v4l.org/HhpYj.

📣 RFC: Clone with

Máté Kocsis предложил добавить поддержку новой языковой конструкции clone with, расширив оператор clone, что позволит писать «wither» методы для любого типа свойств экземпляра (объявленные/динамические, типизированные/нетипизированные, readonly/не-readonly) с меньшим количеством кода.

1class Response implements ResponseInterface {
2 public readonly int $statusCode;
3 
4 public readonly string $reasonPhrase;
5 // ...
6 public function withStatus($code, $reasonPhrase = ''): Response
7 {
8 return clone $this with {
9 statusCode: $code,
10 reasonPhrase: $reasonPhrase
11 };
12 }
13 // ...
14}
15 
16$response = new Response(200);
17$response->withStatus(201)->withStatus(202);

📣 RFC: New core autoloading mechanism with support for function autoloading

George Peter Banyard и Dan Ackroyd предлагают более продуманный механизм автозагрузки классов и добавляют новый механизм автозагрузки функций.

📣 Jakub Zelenka предлагает сформировать Технический комитет PHP

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

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

Инструменты

  • crazywhalecc/static-php-cli – Инструмент для сборки PHP-приложений в один бинарный файл без лишних зависимостей.

  • aschmelyun/subvert – Создание субтитров, аннотаций и глав из видео за считанные секунды.

  • Crell/EnvMapper – Легко отображайте переменные окружения в определенные классифицированные объекты, готовые к внедрению зависимостей.

  • yiisoft/db – Конструктор запросов для различных типов баз данных (MariaDB, MSSQL, MySQL, Oracle, PostgreSQL и SQLite), не зависящий от фреймворка.

  • 🚧 NativePHP – Marcel Pociot создаёт инструмент для запуска приложений Laravel/PHP на десктопе поверх Electron или Tauri.

Laravel

Несмотря на название, Laravel Valet – это минималистичная среда разработки для macOS, которую можно использовать для любого PHP-проекта. В этом выпуске в основном переписываются внутренние компоненты, чтобы их было легче отлаживать, исправлять и модифицировать. Также появилась новая команда valet status и поддержка Expose в качестве опции совместного использования.

Большое обновление популярного плагина для PhpStorm. Оно включает в себя пользовательский интерфейс "New Eloquent Model" и поддержку шаблонов Twig.

Статьи

Видео

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

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

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