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.