New in Symfony 6.1: Misc. Improvements

Symfony 6.1 has just been released. During the past weeks we've published lots of articles about the most important Symfony 6.1 features. In this article, the last one in the Symfony 6.1 series, we showcase some minor but interesting features introduced by Symfony 6.1.

Configure the Deprecation Messages to Ignore

        Contributed by Mondrake
         in #45226.

If your application has some deprecations that you can't fix yet for some reasons, you can tell Symfony to ignore them. First, create a text file where each line is a deprecation to ignore defined as a regular expression:

    # tests/baseline-ignore.txt

%The "PHPUnit\Framework\TestCase::addWarning()" method is considered internal%

Then, you can run the following command to use that file and ignore those deprecations:

    $ SYMFONY_DEPRECATIONS_HELPER='ignoreFile=./tests/baseline-ignore.txt' ./vendor/bin/simple-phpunit

Allow to Exclude Services from Tagged Iterators and Locators

        Contributed by Ruud Kamphuis
         in #44774.

When working with the Delegation pattern or the Chain-of-responsibility pattern it's common that the service that gets a list of services implementing a certain interface, to also implement that interface itself. For example, in Symfony, the ChainCacheClearer class implements CacheClearerInterface and calls a list of services implementing CacheClearerInterface. In those cases you cannot use autowiring because the main service would receive it itself in the list of services implementing the interface. In Symfony 6.1 we've improved TaggedIterator and TaggedLocator to allow you exclude some services via the new exclude option:

    final class DelegatingErrorTracker implements ErrorTracker

{ public function __construct(

[TaggedIterator(ErrorTracker::class, exclude: self::class)]

    private iterable $trackers
) {}

public function trackError(string $error): void
{
    // ...
}

}

Use Route Parameters in Route Conditions

        Contributed by HypeMC
         in #46042.

Symfony provides a powerful feature to define route conditions as expressions. In Symfony 6.1 we've improved it so you can use the matched route parameters in the expression that is evaluated to decide if the route matches or not. Use the new params variable and pass the name of the route parameter that you want to get:

    class FooController

{

[Route('/foo/{id}', requirements: ['id' => '\d+'], condition: "params['id'] < 100")]

public function index(int $id): Response
{
    // ...
}

}

Support Canners in Object Normalizer

        Contributed by Rokas Mikalkėnas
         in #45282.

Currently, the Serializer component can normalize properties with methods that start with get, set, has, is, add or remove (e.g. getUser(), isPublished(), addCategory(), etc.) In Symfony 6.1, the Serializer will also be able to normalize "canner methods", which are those that start with the can prefix (e.g. canPublish(), canApprove(), etc.)

Detailed Checks for Collection Items Uniqueness

        Contributed by Wojciech Kania
         in #42403.

When combining the Unique constraint with the Collection constraint, all the properties of the collection elements are checked to be unique. In Symfony 6.1 we've improved the Unique constraint to allow defining which collection fields should be checked for uniqueness. The following example validates that each translation of the same resource must be in a different language:

    use Symfony\Component\Validator\Constraints as Assert;

[Assert\Count(min: 1)]

[Assert\Unique(fields: ['language'])]

[Assert\Collection(fields: [

'language' => [
    new Assert\NotBlank,
    new Assert\Length(min: 2, max: 2),
    new Assert\Language,
],
'title' => [
    new Assert\NotBlank,
    new Assert\Length(max; 255),
],
'description' => [
    new Assert\NotBlank,
    new Assert\Length(max: 255),
],

])] public array $translations = [];

A Command to Invalidate Cache Tags

        Contributed by Kevin Bond
         in #44692.

Using cache tags is a way to group different cache items based on arbitrary criteria so you can later invalidate those items more efficiently. In Symfony 6.1 we've added a new cache:pool:invalidate-tags command so you can invalidate those cache tags directly in the command line:

    # invalidate `tag1` and `tag2` from all pools

$ php bin/console cache:pool:invalidate-tags tag1 tag2

invalidate tag1 and tag2 only from a specific pool

$ php bin/console cache:pool:invalidate-tags tag1 tag2 --pool=cache.app

                Sponsor the Symfony project.

https://symfony.com/blog/new-in-symfony-6-1-misc-improvements?utm_source=Symfony%20Blog%20Feed&utm_medium=feed

Établi 3y | 27 mai 2022, 09:20:09


Connectez-vous pour ajouter un commentaire

Autres messages de ce groupe

A Week of Symfony #973 (August 18–24, 2025)

This week, Symfony development focused on improving the IsGranted attribute with a new option, updated the Route attribute to allow setting multiple environments, improved the DomCrawler component to

24 août 2025, 09:40:28 | Symfony
A Week of Symfony #972 (August 11–17, 2025)

This week, development activity mostly focused on dealing with the deprecation of sleep/wakeup methods in PHP 8.5 and their replacement by serialize/unserialize methods. In addition, we published more

17 août 2025, 08:30:06 | Symfony
Let’s build the Symfony AI ecosystem together

It’s been only in July that we published symfony/ai and kicked off our AI initiative, but the repository has been busy since day one. Over 500 stars, more than 200 pull requests & issues, trending

16 août 2025, 09:30:03 | Symfony
SymfonyCon Amsterdam 2025:   Unconference Track at SymfonyCon Amsterdam 2025

🎤 Take the stage at SymfonyCon Amsterdam 2025, on your own terms!

The Unconference track is back and more dynamic than ever!

This unique, participant-driven format invites attendees to shape

12 août 2025, 12:40:20 | Symfony
A Week of Symfony #971 (August 4–10, 2025)

This week, Symfony completed the migration to PHPUnit 12 in the 7.4 branch, which required many changes during the past weeks, such as replacing annotations with attributes. In addition, we updated th

10 août 2025, 09:40:09 | Symfony
SymfonyCon Amsterdam 2025:  Join the Symfony Hackathon:  Collaborate, Contribute, Create

🧑‍💻HACKDAY IS COMING!

Get ready to code, collaborate, and contribute, Symfony Hackday is back!

Join us in Amsterdam on Saturday, November 29th, for a hands-on hackathon designed to bring the

6 août 2025, 10:40:04 | Symfony
A Week of Symfony #970 (July 28 – August 3, 2025)

This week, Symfony released the maintenance versions 6.4.24, 7.2.9, and 7.3.2. Meanwhile, we began deprecating the XML configuration format in some components, enhanced the YAML configuration format t

3 août 2025, 08:30:03 | Symfony