Подборка свежих новостей, инструментов, видео и материалов из мира PHP.
Приятного чтения!
PHP 8.2 — большое обновление языка PHP. Оно содержит множество новых возможностей, включая readonly-классы,
самостоятельные типы null, false и true, устаревшие динамические свойства, улучшение производительности и многое
другое.
Подробный список нововведений в 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.4.33 стал последним выпуском PHP 7. PHP 7 больше не будет получать официальных обновлений безопасности.
Однако основные дистрибутивы, такие как RedHat или Ubuntu, будут поставлять обновления безопасности для PHP 7.4 в составе своих LTS.
Выпуски с исправлениями ошибок вышли по расписанию.
❗ Ветка PHP 8.0 прекратила активную поддержку и будет получать только обновления для исправлений безопасности.
Фонд PHP Foundation был основан год назад.
За прошедший год PHP Foundation поддержал работу 6 основных разработчиков и внёс значительный вклад в развитие языка PHP.
Ознакомьтесь с отчётом о прозрачности за 2022 год, чтобы узнать, чего удалось достичь, и увидеть основные цели на 2023 год.
Рассмотрите возможность поддержать PHP Foundation с помощью OpenCollective.
В этом крупном обновлении добавлен предварительный просмотр нового пользовательского интерфейса, добавлена полная поддержку PHP 8.2, поддержка Redis в инструментах баз данных, Code Vision для PHP, предварительный просмотр быстрых исправлений, проверка конфигурации Xdebug, поддержка ParaTest, режим чтения для PHPDoc и многое другое.
Улучшенная поддержка emoji, аутентификатор маркеров доступа, встроенные атрибуты Cache+Security+Template+Doctrine, улучшенная поддержка перечислений и многое другое.
Ознакомьтесь со списком новых возможностей, чтобы узнать об основных моментах этого нового выпуска.
Группа PHP-FIG приняла и пометила PSR-20 с рекомендованным интерфейсом ClockInterface для даты и времени.
В этом выпуске появилось несколько новых функций: list{int, string, float}, properties-of, шаблоны переменных
и int-range<x, y>.
В этом выпуске добавлена поддержка PHP 8.2 и прекращена поддержка PHP 7.2-7.4. В нём появилась возможность проверять возвращаемые значения функции и улучшены предупреждающие сообщения.
В этом обновлении добавили утверждения PHPDoc, типы списков, тег @param-out для параметров, назначаемых по ссылке, и
другие улучшения.
Это обновление добавляет множество улучшений во все системы, а для работы теперь требуется Symfony 6.2 и PHP 8.1.
Большинство новостей ядра PHP подробно освещаются в серии PHP Core Roundup от PHP Foundation, мы лишь быстро по ним пробежимся:
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);
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();
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;
Derick Rethans предложил ввести специфические исключения и ошибки для модуля Date/Time, где это имеет смысл.
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']
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:
qossmic/deptrac – Инструмент анализа архитектуры проекта для определения зависимостей между уровнями приложений.
rob893/emoji-cache – Реализация кеша LRU, но все идентификаторы - эмодзи.

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