UIDs Controller Resolver
Contributed by Thomas Calvet
in #44665.
Symfony provides argument value resolvers to transform certain arguments of controller methods into other objects. That's how you can get for example the current request object just by typing any argument with the Response class. In Symfony 6.1 we're add a new resolver to transform UID values into UID objects. For example, in previous Symfony versions you need to do this to get a UUID v4 from a controller argument:
#[Route(path: '/token/{token}')]
public function someControllerMethod(string $token): Response { $token = UuidV4::fromRfc4122($token); // ... }
In Symfony 6.1 you can do the same type-hinting the controller argument with the type of object you want to receive:
use Symfony\Component\Uid\UuidV4;
[Route(path: '/token/{token}')]
public function someControllerMethod(UuidV4 $token): Response { // ... }
Support for Mutation of Constructor Promoted Properties
Contributed by Raphaël Voisin
in #45062.
Starting from PHP 8.0, you can use constructor property promotion to declare properties directly in the constructor signature. However, you can use PHPdoc annotations to change the type of the properties. In Symfony 6.1 we've improved the PropertyInfo component to take into account those PHPdoc modifications. In the following example, the type of $someProperty will be reported as string instead of mixed:
class SomeClass
{ /**
- @param string $someProperty */ public function __construct(private mixed $someProperty) { } }
Backend Enums Controller Resolver
Contributed by Maxime Steinhausser
in #44831.
Another controller argument resolver added in Symfony 6.1 allows to transform arguments into backend enums cases. Take for example the well-known Suit enum example:
namespace App\Model;
enum Suit: string { case Hearts = 'H'; case Diamonds = 'D'; case Clubs = 'C'; case Spades = 'S'; }
In Symfony 6.1 you can use Suit as the type of the controller argument. If the route parameter matches any of the enum values, Symfony will inject the enum case. Otherwise, it will return a 404 HTTP error:
class CardController
{
[Route('/cards/{suit}')]
public function list(Suit $suit): Response
{
// ...
}
}
PHPStan Pseudo-Types Support
Contributed by Emil Masiakowski
in #44451.
Thanks to the popularity of static analyzers such as PHPStan, more and more developers use pseudo-types that describe arguments and return values with more precision. For example, instead of string you can use non-empty-string; instead of int you can use positiveInt; instead of int|float you can use number, etc. In Symfony 6.1 we've improved the PropertyInfo to properly infer the right PHP type of a variable described with these pseudo-types:
class SomeClass
{ /* @var negative-int / public $property1;
/** @var non-empty-array */
public $property2;
/** @var non-empty-list */
public $property3;
/** @var non-empty-lowercase-string */
public $property4;
}
In Symfony 6.1, the PHP type of these properties will be correctly inferred as integer, array, array and string respectively.
Sponsor the Symfony project.
Autentifică-te pentru a adăuga comentarii
Alte posturi din acest grup

This week, development activity focused on the upcoming Symfony 7.4 and 8.0 versions, which will deprecate and remove many features. In addition, we published a case study about Yousign. Finally, we'r

As digital signatures become the norm in modern business, Yousign has established itself as a trusted leader across Europe. Behind its simple, intuitive interface is a powerful technical engine, handl

Get ready for the exciting SymfonyOnline June 2025, kicking off in a few days only! There’s still time to register and join the international online Symfony conference—along with pre-conferenc

This week, Symfony released the stable version of Symfony 7.3, which includes lots of amazing new features. We also published the maintenance versions 6.4.22 and 7.2.7.
Symfony development highlights

This is the second part of the blog post showcasing the main DX (developer experience) features introduced in Symfony 7.3. Read the first part of this blog post.
Verify URI Signatures… https://symfon

Symfony 6.4.22 has just been released. Read the Symfony upgrade guide to learn more about upgrading Symfony and use the SymfonyInsight upgrade reports to detect the code you will need to change in you

Symfony 7.2.7 has just been released. Read the Symfony upgrade guide to learn more about upgrading Symfony and use the SymfonyInsight upgrade reports to detect the code you will need to change in your