Новое в Symfony 5.4: Различные улучшения (часть 1)

Источник: «New in Symfony 5.4: Misc. features (part 1)»
Новые улучшения в Symfony 5.4: Строгий режим для ресурсов, улучшения страницы ошибок, исключения каталогов для линтера yaml, новый нулевой класс ULID и новые строковые функции.

Строгий Режим для Отсутствующих Ресурсов

В приложении Symfony вы можете использовать JSON файл манифеста как стратегию по управлению версиями ресурсов. Когда запрошенный ресурс не указан в manifest.json, Symfony возвращает немодифицированный путь к ресурсу. Это предотвращает прерывание работы приложения при отсутствии какого-либо ресурса, но генерирует ошибку 404 в браузере, когда пытается его загрузить.

В Symfony 5.4 мы добавили параметр strict_mode (по умолчанию он отключён). Когда он включён, приложение вызывает исключение для отсутствующего ресурса, чтобы вы могли решить проблему. Рекомендуется использовать в качестве значения %kernel.debug%, чтобы приложение прервалось при разработке/тестировании, но продолжало работать в продакшене:

# config/packages/assets.yaml
framework:
assets:
packages:
app:
strict_mode: '%kernel.debug%'

Копирование Пути к Файлам на Страницах Ошибок

Пути к файлам трассировки ошибок на станицах исключений кликабельны. Если вы правильно сконфигурировали опцию framework.ide, вы можете открыть эти файлы непосредственно в PphStorm, VS Code, SublimeText и т.д. В Symfony 5.4 мы немного улучшили эту страницу, чтобы вы могли копировать эти пути файлов в буфер обмена. Вам нужно лишь навести курсор мыши на строку, где вы увидите новый значок буфера обмена и кликнуть по нему:

Symfony error page

Разрешено Исключать Каталоги из YAML Линтера

Команда lint:yaml - приятный небольшой инструмент, который используется, например, для поиска ошибок в файлах перевода. Однако, иногда у вас могут быть YAML файлы, в которых используются собственные расширения синтаксиса или дополнительные функции, не поддерживаемые YAML линтером. В этих случаях используйте новую опцию --exclude, что бы не проверять файлы в указанных каталогах:

$ php bin/console lint:yaml translations/ --exclude=translations/experimental/

# вы может исключать несколько каталогов
$ php bin/console lint:yaml translations/ --exclude=translations/draft/ --exclude=translations/discarded/

Новый Нулевой ULID Класс компонента Uid

Компонент Uid предоставляет утилиты для работы с UUID и ULID. Стандарт UUID определяет объект NilUuid для значения null UUID и Symfony компонент реализует его. Однако, даже если стандарт ULID не определяет объект NilUlid, мы решили добавить его в Symfony 5.4, чтобы вы могли легко создавать и проверять null значения ULID:

# До
use Symfony\Component\Uid\Ulid;

$nilUlid = new Ulid('00000000000000000000000000');

# После
use Symfony\Component\Uid\NilUlid;

$nilUlid = new NilUlid();

Новые Строковые Функции Компонента String

Компонент String предоставляет объектно-ориентированный API для строк и обработки байтов, символов UTF-8 и кластеров графемы унифицированным образом.

В Symfony 5.4 мы добавили к нему две новые функции:

// удаляет заданный контент с начала/конца строки
u('file-image-0001.png')->trimPrefix('file-'); // 'image-0001.png'
u('file-image-0001.png')->trimPrefix('image-'); // 'file-image-0001.png'

u('template.html.twig')->trimSuffix('.html'); // 'template.html.twig'
u('template.html.twig')->trimSuffix('.twig'); // 'template.html'

// когда задан массив префиксов/суффиксов, только первый совравший обрезается
u('file-image-0001.png')->trimPrefix(['file-', 'image-']); // 'image-0001.png'
u('template.html.twig')->trimSuffix(['.twig', '.html']); // 'template.html'

Дополнительные материалы

Предыдущая Статья

Новое в Symfony 5.4: Улучшения сериализатора

Следующая Статья

Новое в Symfony 5.4: Различные улучшения (часть 2)