Июнь 2023

Июнь 2023

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

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

Новости

PHP исполнилось 28 лет!

8 июня 1995 года Rasmus Lerdorf впервые объявил о PHP.

С днем рождения, PHP! 🎉🥳🎂

WordPress исполнилось 20 лет

Не 28, конечно, но все равно достижение! Поздравляем!

PHP 8.3.0 Alpha 1 доступен для тестирования

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

Заморозка функций ожидается 18 июля, а это значит, что некоторые изменения ещё могут попасть в релиз. На данный момент наиболее заметными являются следующие изменения:

Вышли 8.1.20 и PHP 8.2.7

❗ Всем пользователям настоятельно рекомендуется обновиться до этих выпусков безопасности.

❗️Захват аккаунта мейнтейнера Packagist.org

Узнайте что произошло и могли ли вы пострадать.

Открыта программа раннего доступа к PhpStorm 2023.2

Ознакомьтесь бесплатно с последними функциями, которые были добавлены в IDE до официального релиза.

PHP Core

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

📣 RFC: Property hooks

В этом RFC Ilija Tovillo и Larry Garfield предлагают объявлять виртуальные свойства с помощью функций get/set.

Дизайн и синтаксис больше всего похожи на Kotlin, хотя в нем также прослеживается влияние C# и Swift.

1class User implements Named
2{
3 private bool $isModified = false;
4 
5 public function __construct(private string $first, private string $last) {}
6 
7 public string $fullName {
8 // Override the "read" action with arbitrary logic.
9 get => $this->first . " " . $this->last;
10 
11 // Override the "write" action with arbitrary logic.
12 set($value) => [$this->first, $this->last] = explode(' ', $value);
13 }
14}

📣 RFC: Marking overridden methods (#[\Override])

Tim Düsterhus предлагает добавить атрибут #[\Override]. Этот атрибут, будучи применённым к методу, заставит движок проверять существование метода с таким же именем в родительском классе или любых реализованных интерфейсах.

1interface I { public function i(): void;
2}
3 
4class P {
5 #[\Override]
6 public function i(): void {} // Fatal error: P::i() has #[\Override] attribute, but no matching parent method exists
7}
8 
9class C extends P implements I {} // Всё хорошо 👍

📣RFC: NameOf

Robert Landers предлагает добавить глобальную функцию nameof(). Эта функция позволит разработчикам быстро и легко получить имя практически любой определяемой пользователем переменной, свойства, константы или члена.

1echo nameof($variable); // variable
2echo nameof($object->property); // property
3echo nameof(Enum::Case); // Case
4echo nameof(Object::Const); // Const
5echo nameof(myFunction(...)); // myFunction
6echo nameof(MY_CONSTANT); // MY_CONSTANT

Инструменты

  • wp-now – Локальная среда разработки от команды инженеров WordPress. Этот инструмент использует WebAssembly для работы PHP поверх веб-сервера Node.js. Он быстрее, чем окружения на базе Docker и может использоваться с любыми PHP-приложениями, хотя вам придётся придумать, как запустить свою базу данных.

  • Вышел PHP Monitor 6.0 – В этом крупном обновлении появился новый менеджер версий PHP, новый автономный режим, позволяющий приложению работать без установленного Valet и многое другое.

  • pmjones/AutoShel – Автоматически сопоставляет имена команд CLI с классами команд PHP в указанном пространстве имён, обращаясь к указанному методу main в этом классе для определения значений аргументов и параметров. Параметрами метода могут быть скалярные значения (int, float, string, bool) или массивы.

  • jolicode/castor – Программа для запуска задач и команд, созданная с упором на опыт разработчиков и построенная на PHP.

  • ProjektGopher/whisky – Простой и не зависящий от фреймворка CLI-инструмент для управления и внедрения git-хуков PHP-проекта в команде.

  • schranz-search/schranz-search – Поисковая абстракция над различными поисковыми системами, написанными на PHP. В настоящее время реализованы такие поисковые системы, как Elasticsearch, Opensearch, Algolia, Meilisearch, RediSearch, Solr и Typesense.

  • TestGenAI – Инструмент от Tomas Votruba, автора Rector, для генерации модульных тестов для PHP-кода.

  • librarianphp/librarian – Генератор статических сайтов и индексатор разметки, вдохновленный Hugo и DEV, написанный на PHP. Читайте историю создания.

Symfony

В этом обновлении представлены различные новые возможности и улучшения, включая компонент Scheduler, интеграцию webhook с Mailer и Notifier, компонент AssetMapper, улучшения в Dependency Injection, улучшения DX, новые интеграции с Notifier, улучшения HttpClient, улучшения Clock и многое другое.

Laravel

Yii

Статьи

Видео

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

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

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