Новое в Symfony 6.4: Улучшения DX (часть 1)
Поддержка числовых кодов 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
- Pull Request: [Validator] Update
Typeconstraint, addnumber,finite-floatandfinite-numbervalidations #50907 Guillaume A.
Ограничение Type проверяет, что заданное значение относится к определённому типу данных (например, callable, numeric, countable, double и т.д.) В Symfony 6.4 мы улучшаем его, добавляя три новых типа:
finite-float;number, конечное или бесконечное целое число или float;finite-number, конечное целое число или float.
Эти новые типы можно комбинировать с любыми другими существующими типами:
#[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(), позволяющий не исключать каталоги, а отсекать их заранее. Это может значительно повысить производительность, поскольку отсечение означает, что эти каталоги будут полностью пропущены, вместо того чтобы обходить всю структуру файлов/каталогов и исключать их впоследствии.
Новые методы рендеринга блоков из контроллеров
- Pull Request: [FrameworkBundle] Add
AbstractController::renderBlock()andrenderBlockView()#51327 Nicolas Grekas
Класс AbstractController — это опциональный базовый контроллер, предоставляющий утилиты, часто необходимые в ваших собственных контроллерах. В Symfony 6.4 мы улучшаем его, добавляя два новых метода:
renderBlock(), рендерит заданный Twig-блок из шаблона и возвращает объектResponse;renderBlockView(), рендерит заданный Twig-блок из шаблона и возвращает его содержимое в виде строковой переменной.
Эти методы могут пригодиться, например, при генерации ответов турбо потока:
// До
return new Response(
$this->container->get('twig')->load('foo.html.twig')->renderBlock('the_block', $context)
);
// После
return $this->renderBlock('foo.html.twig', 'the_block', $context);