Декабрь 2022

Декабрь 2022

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

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

Новости

Вышел PHP 8.2.0!

PHP 8.2 — большое обновление языка PHP. Оно содержит множество новых возможностей, включая readonly-классы, самостоятельные типы null, false и true, устаревшие динамические свойства, улучшение производительности и многое другое.

Подробный список нововведений в PHP 8.2 можно найти на странице релиза и в руководстве по обновлению.

Установка/Обновление до PHP 8.2

Windows: Скомпилированные двоичные файлы доступны на сайте windows.php.net.

Ubuntu/Debian: PHP 8.2 доступен на ondrej/php PPA.

Fedora/RHEL/CentOS/Alma/Rocky: Доступен в виде коллекции программ php82 в репозитории Remi.

macOS: PHP 8.2 можно установить с помощью Homebrew совместно с shivammathur/homebrew-php.

Docker: Образы PHP 8.2 доступны на Docker Hub с тегами 8.2*.

Поддержка PHP 7 завершена

PHP 7.4.33 стал последним выпуском PHP 7. PHP 7 больше не будет получать официальных обновлений безопасности.

Однако основные дистрибутивы, такие как RedHat или Ubuntu, будут поставлять обновления безопасности для PHP 7.4 в составе своих LTS.

Вышли PHP 8.0.26 и PHP 8.1.13

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

❗ Ветка PHP 8.0 прекратила активную поддержку и будет получать только обновления для исправлений безопасности.

🎂 PHP Foundation исполняется 1 год

Фонд PHP Foundation был основан год назад.

За прошедший год PHP Foundation поддержал работу 6 основных разработчиков и внёс значительный вклад в развитие языка PHP.

Ознакомьтесь с отчётом о прозрачности за 2022 год, чтобы узнать, чего удалось достичь, и увидеть основные цели на 2023 год.

Рассмотрите возможность поддержать PHP Foundation с помощью OpenCollective.

PhpStorm 2022.3

В этом крупном обновлении добавлен предварительный просмотр нового пользовательского интерфейса, добавлена полная поддержку PHP 8.2, поддержка Redis в инструментах баз данных, Code Vision для PHP, предварительный просмотр быстрых исправлений, проверка конфигурации Xdebug, поддержка ParaTest, режим чтения для PHPDoc и многое другое.

Вышел Symfony 6.2

Улучшенная поддержка emoji, аутентификатор маркеров доступа, встроенные атрибуты Cache+Security+Template+Doctrine, улучшенная поддержка перечислений и многое другое.

Ознакомьтесь со списком новых возможностей, чтобы узнать об основных моментах этого нового выпуска.

Принят PSR-20: Clock

Группа PHP-FIG приняла и пометила PSR-20 с рекомендованным интерфейсом ClockInterface для даты и времени.

Вышел Psalm 5

В этом выпуске появилось несколько новых функций: list{int, string, float}, properties-of, шаблоны переменных и int-range<x, y>.

Вышел Xdebug 3.2.0

В этом выпуске добавлена поддержка PHP 8.2 и прекращена поддержка PHP 7.2-7.4. В нём появилась возможность проверять возвращаемые значения функции и улучшены предупреждающие сообщения.

Вышел PHPStan 1.9.0

В этом обновлении добавили утверждения PHPDoc, типы списков, тег @param-out для параметров, назначаемых по ссылке, и другие улучшения.

Вышел Drupal 10

Это обновление добавляет множество улучшений во все системы, а для работы теперь требуется Symfony 6.2 и PHP 8.1.

PHP Core

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

📣 PHP RFC: Dynamic class constant fetch

Ilija Tovilo предложил ввести синтаксис для поиска констант классов.

1class Foo {
2 const BAR = 'bar';
3}
4$bar = 'BAR';
5 
6// В настоящее время это синтаксическая ошибка
7echo Foo::{$bar};
8 
9// Вместо этого следует использовать функцию `constant`.
10echo constant(Foo::class . '::' . $bar);

📣 RFC: Arbitrary static variable initializers

Ilija Tovilo предложил расширить синтаксис, позволяющий инициализатору статической переменной содержать произвольные выражения.

1function bar() {
2 echo "вызвана функция bar()\n";
3 return 1;
4}
5 
6function foo() {
7 static $i = bar();
8 echo $i++, "\n";
9}
10 
11foo();

📣 RFC: Readonly amendments

Nicolas Grekas и Máté Kocsis предложили улучшить свойства и классы readonly, позволив не-readonly классам расширять классы readonly и разрешив свойствам readonly повторно инициализироваться при клонировании:

1readonly class Foo {
2 public function __construct(
3 public DateTime $bar
4 ) {}
5 
6 public function __clone()
7 {
8 $this->bar = clone $this->bar;
9 }
10}
11 
12$foo = new Foo(new DateTime());
13$foo2 = clone $foo;

📊 RFC: More Appropriate Date/Time Exceptions

Derick Rethans предложил ввести специфические исключения и ошибки для модуля Date/Time, где это имеет смысл.

📣 RFC: List\unique() and Assoc\unique()

Ilija Tovilo предложил добавить две новые функции для случаев, которые не поддерживаются функцией array_unique():

1List\unique([1, 2, 3, 1, '2', 3.0, new Foo, ['bar']]);
2// > [1, 2, 3, '2', 3.0, Foo, ['bar']]
3 
4Assoc\unique(['foo' => 'foo', 'bar' => 'bar', 'baz' => 'foo']);
5// > ['foo' => 'foo', 'bar' => 'bar']

📣 RFC: Unicode Text Processing

Derick Rethans предлагает ввести новый класс Text, чтобы сделать использование и обработку текста Unicode значительно более удобным для разработчиков и без необходимости разбираться во всех тонкостях обработки текста Unicode.

Инструменты

  • Marcel Pociot создал аккуратного бота для GitHub, который оценивает блоки PHP-кода в GitHub Issues, если вы упомянете его @phptinker:

  • ramsey/uuid – В новой версии пакета для генерации универсальных уникальных идентификаторов появилась поддержка UUID v8 и пользовательских UUID.

  • loophp/collection – Класс модульных коллекций, дружественный к памяти, выпустил большое обновление.

  • php-rust-tools/parser – PHP-парсер, написанный Ryan Chandler и Saif Eddin на Rust.

    Вас также может заинтересовать phper – инструмент, позволяющий писать PHP-модули, используя чистый и безопасный Rust, когда это возможно.

  • ScriptFUSION/Porter – Долговечный и асинхронный импорт данных для масштабного потребления данных и публикации тестируемых SDK.

  • ChatGPT захватывает всё вокруг, поэтому вам стоит обратить внимание на PHP-клиент для OpenAI:

    • openai-php/client – Насыщенный API-клиент, позволяющий взаимодействовать с OpenAI API.
    • orhanerday/open-ai – PHP SDK для доступа к API OpenAI GPT-3.
  • qossmic/deptrac – Инструмент анализа архитектуры проекта для определения зависимостей между уровнями приложений.

  • rob893/emoji-cache – Реализация кеша LRU, но все идентификаторы - эмодзи.

PhpStorm

Laravel

Yii

Статьи

Видео

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

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

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