Подборка свежих новостей, инструментов, видео и материалов из мира PHP.
Приятного чтения!
Выпуски с исправлениями ошибок вышли по расписанию.
В Pest 2 появилось множество новых возможностей, таких как повторное тестирование, профилирование медленных тестов, поддержка нового плагина arch и многое другое.
Bref позволяет с лёгкостью развёртывать PHP-приложения на бессерверной платформе AWS Lambda.
В этом обновлении упрощена настройка PHP, улучшена интеграция с Laravel, ускорено развёртывание, автоматическая загрузка секретов в переменные окружения во время выполнения, а также упрощён docker-compose.yml для локальной разработки.
Подпишитесь на рассылку Serverless PHP, чтобы получать больше материалов по этой теме.
Новая версия руководства по стилю кодирования PHP исправляет некоторые проблемы, а также обновляет руководство с учётом последних дополнений к синтаксису PHP.
Посмотрите на GitHub, чем PER CS 2.0 отличается от PSR-12.
Это первое крупное обновление PhpStorm в этом году. В нём появилась интеграция с 3v4l.org, повысилась производительность, улучшился новый пользовательский интерфейс, появился отладчик DFA для PHP и многое другое.
Команда PHP Foundation объявила о возможности поддержки PHP с помощью программы GitHub Sponsors и раскрыла новую инициативу Консультативного совета.
По традиции, у PHP 8.3 будет два новичка-релиз-менеджера: Jakub Zelenka, разработчик ядра PHP, поддерживаемый PHP Foundation и Eric Mann. Им будет помогать ветеран-релиз-менеджер PHP 8.2 Pierrick Charron.
Большинство новостей ядра PHP подробно освещаются в серии PHP Core Roundup от PHP Foundation, мы лишь быстро по ним пробежимся:
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// 114foo();15// 216foo();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.
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: $reasonPhrase11 };12 }13 // ...14}15 16$response = new Response(200);17$response->withStatus(201)->withStatus(202);
George Peter Banyard и Dan Ackroyd предлагают более продуманный механизм автозагрузки классов и добавляют новый механизм автозагрузки функций.
В 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 Valet – это минималистичная среда разработки для macOS, которую можно использовать для любого PHP-проекта.
В этом выпуске в основном переписываются внутренние компоненты, чтобы их было легче отлаживать, исправлять и модифицировать. Также появилась новая команда valet status и поддержка Expose в качестве опции совместного использования.
Большое обновление популярного плагина для PhpStorm. Оно включает в себя пользовательский интерфейс "New Eloquent Model" и поддержку шаблонов Twig.
Нажимая «Подписаться» я даю согласие на обработку персональных данных.
Мы заботимся о ваших данных и не будем злоупотреблять доверием.