Новое в Symfony Polyfills 1.15

Symfony Polyfills предоставляет PHP-реализации определенных функций PHP, поэтому вы можете использовать их, даже если у вас не установлена необходимая версия PHP или расширение PHP. Symfony Polyfill 1.15 был выпущен недавно, и это самые важные изменения.

Улучшения в PHP 8 polyfill

PHP 8.0, следующая основная версия PHP, заявленная к выпуску 3 декабря 2020 года, добавит некоторые интересные функции. Некоторые из них уже были добавлены в Symfony PHP 8 polyfill, поэтому вы можете начать использовать их сегодня независимо от вашей версии PHP.

Добавлен Stringable интерфейс

Stringable — это новый интерфейс PHP, который автоматически добавляется к любому объекту, который реализует __toString().

Его можно использовать для подтверждения того, что вы принимаете как строки, так и объекты, которые можно преобразовать в строки. В PHP 8 вы можете сделать это, например, с помощью следующего типа объединения: string|Stringable.

Подробнее об этом интерфейсе читайте в Stringable PHP RFC.

Добавлен get_debug_type()

Новая функция get_debug_type() возвращает заданный тип переменной.

Можно упростить код, который требует с помощью get_class() и gettype(), чтобы получить тип некоторой переменной:

// Before
throw new TypeError('Expected '.Foo::class.' got '.(is_object($bar) ? get_class($bar) : gettype($bar)));

// After
throw new TypeError('Expected '.Foo::class.' got '.get_debug_type($bar));

Подробнее об этой функции читайте в get_debug_type() PHP RFC.

Добавлен str_contains()

Новая функция str_contains() проверяет, содержится ли строка в другой строке, и возвращает логическое значение (true/false), независимо от того, была ли найдена строка. Эта функция может заменить strpos() и strstr(), которые часто используются для той же цели, но требуют кода, который иногда не очень интуитивно понятен.

Подробнее об этой функции читайте в str_contains() PHP RFC.

Добавлен preg_last_error_msg()

Новая функция preg_last_error_msg() возвращает удобное для человека строковое представление последней ошибки выполнения регулярного выражения PCRE.

В предыдущих версиях PHP вам приходилось преобразовывать код ошибки, возвращаемый функцией preg_last_error(), в значимое сообщение об ошибке.

UUID polyfill улучшений

В полифилле UUID, который используется в новом компоненте Symfony Uid, добавлена поддержка типов UUID 3 и UUID 5.

Кроме того, мы добавили поддержку UUID в 32-битных системах, чтобы сделать полифилл действительно переносимым.

Исправлена предзагрузка PHP

Предварительная загрузка PHP – одна из самых важных новых функций, представленных в PHP 7.4. Эта функция позволяет загружать некоторые функции/классы в память, чтобы сделать их доступными для всех запросов, что повышает производительность приложения.

В Symfony Polyfill 1.15 мы исправили некоторые проблемы, чтобы убедиться, что все полифилы совместимы с предварительной загрузкой PHP.