Новое в Symfony 5.4: Различные улучшения (часть 1)
- Новое в Symfony 5.4: Различные улучшения (часть 1)
- Новое в Symfony 5.4: Различные улучшения (часть 2)
- Новое в Symfony 5.4: Различные улучшения (часть 3)
Строгий Режим для Отсутствующих Ресурсов
В приложении 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 мы немного улучшили эту страницу, чтобы вы могли копировать эти пути файлов в буфер обмена. Вам нужно лишь навести курсор мыши на строку, где вы увидите новый значок буфера обмена и кликнуть по нему:
Разрешено Исключать Каталоги из 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'