Symfony 7 est arrive avec son lot de nouveautes et d’ameliorations. Dans cet article, nous allons explorer les changements majeurs de cette nouvelle version.
Configuration minimale requise
Symfony 7 necessite PHP 8.2 au minimum. C’est un changement important qui permet au framework de tirer parti des dernieres fonctionnalites du langage.
// Utilisation des types d'intersection
public function process(Countable&Traversable $items): void
{
foreach ($items as $item) {
// ...
}
}
Les nouveaux attributs
Symfony 7 introduit de nouveaux attributs PHP pour simplifier la configuration.
MapRequestPayload
Cet attribut permet de mapper automatiquement le corps d’une requete JSON vers un objet DTO :
use Symfony\Component\HttpKernel\Attribute\MapRequestPayload;
#[Route('/api/users', methods: ['POST'])]
public function create(
#[MapRequestPayload] CreateUserDTO $dto
): JsonResponse {
$user = $this->userService->create($dto);
return $this->json($user, Response::HTTP_CREATED);
}
MapQueryString
Pour mapper les parametres de requete :
use Symfony\Component\HttpKernel\Attribute\MapQueryString;
#[Route('/api/products')]
public function list(
#[MapQueryString] ProductFilterDTO $filters
): JsonResponse {
$products = $this->repository->findByFilters($filters);
return $this->json($products);
}
Amelioration du systeme de securite
Le composant Security a ete simplifie avec une nouvelle approche pour les Access Tokens :
// config/packages/security.yaml
security:
firewalls:
api:
pattern: ^/api
stateless: true
access_token:
token_handler: App\Security\AccessTokenHandler
namespace App\Security;
use Symfony\Component\Security\Http\AccessToken\AccessTokenHandlerInterface;
class AccessTokenHandler implements AccessTokenHandlerInterface
{
public function getUserBadgeFrom(string $accessToken): UserBadge
{
// Validation et extraction de l'utilisateur
$user = $this->tokenService->validateAndGetUser($accessToken);
return new UserBadge($user->getUserIdentifier());
}
}
Conclusion
Symfony 7 apporte des ameliorations significatives en termes de productivite et de performance. La migration depuis Symfony 6.4 devrait etre relativement simple grace aux deprecations progressives.
N’hesitez pas a consulter la documentation officielle pour plus de details.