Новое в 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
Type
constraint, addnumber
,finite-float
andfinite-number
validations #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);