New in Symfony 6.4: DX Improvements (part 1)
ISO 3166-1 Numeric Codes Support
Contributed by
Ben Roberts
in #51073.
The Intl component provides access to the 2-letter and 3-letter alphabetic codes
that represent countries, dependent territories, and special areas of geographical
interest. However, the alphabetic codes use the 26-letter English alphabet, which
might be unavailable or difficult to use for people and systems using non-Latin
scripts (e.g. Arabic or Japanese).
That’s why in Symfony 6.4 we’re adding support also for the ISO 3166-1 numeric standard,
which represent each country/territory with a 3-digit integer. For example,
Singapore is SG (ISO 3166-1 alpha-2), SGP (3166-1 alpha-3) and 702
(ISO 3166-1 numeric).
Improve Type Constraint
Contributed by
Guillaume A.
in #50907.
The Type constraint validates that the given value is of a specific data type
(e.g. callable, numeric, countable, double, etc.) In Symfony 6.4
we’re improving it with three new types:
finite-float;
number, a finite or infinite integer or float;
finite-number, a finite integer or float.
You can combine these new types with any of the other existing types:
#[AssertType([‚int‘, ‚finite-float‘])]
private $value;
Custom Precision when Formatting Time Messages in Console
Contributed by
Maximilian Beckers
in #50537.
The time formatting utilities provided by the Console component are useful
to display the elapsed or remaining time in progress bars, etc. In Symfony 6.4
we’re improving those utilities so you can set the precision used to render the time.
This precision is an integer that tells how many parts of the time (days, hours, etc.)
should be displayed.
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
Early Directory Pruning
Contributed by
Michael Voříšek
in #50877.
The Finder component provides many utilities to find files and directories
based on certain conditions. One of those utilities is the filter() method,
which allows to exclude directories from the result.
In Symfony 6.4 we’re adding a second optional argument to filter() which allows
you to prune directories early instead of excluding them. This can improve performance
significantly because pruning means that those directories are completely skipped
instead of traversing the entire file/directory structure and excluding them later.
New Methods to Render Blocks from Controllers
Contributed by
Nicolas Grekas
in #51327.
The AbstractController class in an optional base controller that provides
utilities commonly needed in your own controllers. In Symfony 6.4 we’re improving
it with two new methods:
renderBlock(), renders the given Twig block from a template and returns
a Response object;
renderBlockView(), renders the given Twig block from a template and returns
the contents as a string variable.
These methods come in handy e.g. when generating turbo stream responses:
// Before
return new Response(
$this->container->get(‚twig‘)->load(‚foo.html.twig‘)->renderBlock(‚the_block‘, $context)
);
// After
return $this->renderBlock(‚foo.html.twig‘, ‚the_block‘, $context);
Symfony Blog