Новое в Symfony 6.4: Улучшения DX (часть 1)

Источник: «New in Symfony 6.4: DX Improvements (part 1)»
В Symfony 6.4 реализована поддержка числовых кодов ISO 3166-1, улучшено ограничение Type, повышена точность форматирования временных сообщений, улучшена работа утилит фильтрации Finder

Поддержка числовых кодов ISO 3166-1

Компонент Intl обеспечивает доступ к двух- и трёхбуквенным алфавитным кодам, обозначающим страны, зависимые территории и особые географические зоны. Однако в этих алфавитных кодах используется 26-буквенный английский алфавит, который может быть недоступен или затруднителен для людей и систем, использующих нелатинскую письменность (например, арабскую или японскую).

Поэтому в Symfony 6.4 мы добавляем поддержку и числового стандарта ISO 3166-1, в котором каждая страна/территория представлена трёхзначным целым числом. Например, Сингапур — это SG (ISO 3166-1 alpha-2), SGP (3166-1 alpha-3) и 702 (ISO 3166-1 numeric).

Улучшено ограничения Type

Ограничение Type проверяет, что заданное значение относится к определённому типу данных (например, callable, numeric, countable, double и т.д.) В Symfony 6.4 мы улучшаем его, добавляя три новых типа:

Эти новые типы можно комбинировать с любыми другими существующими типами:

#[Assert\Type(['int', 'finite-float'])]
private $value;

Настраиваемая точность при форматировании временных сообщений в консоли

Утилиты форматирования времени, предоставляемые компонентом Console, полезны для отображения прошедшего или оставшегося времени в прогресс барах и т.д. В Symfony 6.4 мы улучшаем эти утилиты, позволяя задавать точность, используемую для отображения времени. Эта точность представляет собой целое число, которое определяет, сколько частей времени (дней, часов и т.д.) должно быть отображено.

Helper::formatTime(172799, 1); // 1 day
Helper::formatTime(172799, 2); // 1 day, 23 hrs
Helper::formatTime(172799, 3); // 1 day, 23 hrs, 59 mins
Helper::formatTime(172799, 4); // 1 day, 23 hrs, 59 mins, 59 secs

Раннее исключение каталога

Компонент Finder предоставляет множество утилит для поиска файлов и каталогов на основе определённых условий. Одной из таких утилит является метод filter(), позволяющий исключить каталоги из результата.

В Symfony 6.4 мы добавили второй необязательный аргумент в filter(), позволяющий не исключать каталоги, а отсекать их заранее. Это может значительно повысить производительность, поскольку отсечение означает, что эти каталоги будут полностью пропущены, вместо того чтобы обходить всю структуру файлов/каталогов и исключать их впоследствии.

Новые методы рендеринга блоков из контроллеров

Класс AbstractController — это опциональный базовый контроллер, предоставляющий утилиты, часто необходимые в ваших собственных контроллерах. В Symfony 6.4 мы улучшаем его, добавляя два новых метода:

Эти методы могут пригодиться, например, при генерации ответов турбо потока:

// До
return new Response(
$this->container->get('twig')->load('foo.html.twig')->renderBlock('the_block', $context)
);

// После
return $this->renderBlock('foo.html.twig', 'the_block', $context);

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

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

Очистите свой JavaScript: Избавьтесь от регулярных выражений

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

Что такое цепочка прототипов в JavaScript