Quantcast
Channel: Symfony Blog
Viewing all articles
Browse latest Browse all 3123

New in Symfony 6.4: DX Improvements (part 1)

$
0
0

ISO 3166-1 Numeric Codes Support

Ben Roberts

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

Guillaume A.

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:

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

Custom Precision when Formatting Time Messages in Console

Maximilian Beckers

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

Michael Voříšek

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

Nicolas Grekas

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);

Sponsor the Symfony project.

Viewing all articles
Browse latest Browse all 3123

Trending Articles