New in Symfony 5.4: Misc. features (part 3)

This is the last blog post of the blog series that shows the new features of Symfony 5.4 and 6.0. We hope you enjoyed it and now want to upgrade your Symfony applications to these new versions.

Longer RateLimiter Intervals

        Contributed by Alexandre Daubois 
        in #43060.

The RateLimiter component provides a Token Bucket implementation to rate limit input and output in your application. It's commonly used in features like login throttling (e.g. allow up to 5 failed login attempts every hour) and API constraints (e.g. allow up to 1,000 requests per hour). However, some applications need longer intervals to only allow a certain number of evens per month or even per year. That's why in Symfony 5.4 we're adding the perMonth() and perYear() methods to the RateLimiter component.

Simpler Way of Creating Constraint Errors

        Contributed by Grégoire Pineau 
        in #41154.

When using the Validator component, if some validation fails, you get a non-empty list of errors in the form of a ConstraintViolationList class. You need to do the same when creating validation errors yourself. This is cumbersome when you only have one error:

    1

2 3 4 5 $violations = new ConstraintViolationList(); $violations->add(new ConstraintViolation('A publish is already running.', '', [], null, '', null));

// e.g. when using ApiPlatform\Core\Bridge\Symfony\Validator\Exception\ValidationException throw new ValidationException($violations);

In Symfony 5.4 we've added a new createSingleConstraint() method so simplify the creation of single-error validation errors:

    1

2 3 $violations = ConstraintViolationList::createSingleConstraint('A publish is already running.');

throw new ValidationException($violations);

Lock Files When Appending To Them

        Contributed by fwolfsjaeger 
        in #43796.

The Filesystem component provides OS-independent features related to the file system. One of those utilities is the appendToFile() method, which adds some content at the end of some file. In Symfony 5.4 we've improved it with a third optional boolean argument. If set to true, Symfony will acquire an exclusive lock on the file while proceeding to the writing (it's the same as the \LOCK_EX flag in PHP).

    1

2 3 4 $filesystem->appendToFile('logs.txt', 'Email sent to user@example.com');

// the third argument tells whether the file should be locked when writing to it $filesystem->appendToFile('logs.txt', 'Email sent to user@example.com', true);

PhpStan Extractor for PropertyInfo

        Contributed by Baptiste Leduc 
        in #40457.

The PropertyInfo component extracts information about the properties of PHP classes using metadata of popular sources (Doctrine, PHP Reflection, PHPdoc, etc.) In Symfony 5.4 we're adding support to extract information based on the metadata defined for PHPStan, a popular PHP static analysis tool. This will allow you to extract information from metadata like the following:

    1

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 class SomeClass { /* @var string|int / public $property1;

/** @var (string|int)[] */
public $property2;

/** @var array */
public $property3;

/** @var array */
public $property4;

/** @var (Dummy | ParentDummy | null) */
public $property5;

}

Did you know? Your company can sponsor the Filesystem, RateLimiter, PropertyInfo or any of the other Symfony components. Show your logo, link and description next to some component both on symfony.com and GitHub. Increase the awareness of your brand, attract new developers to your company and help support the Open Source Symfony project. Interested? Contact us via the "Symfony Backers" option of the Symfony Support page.

                Sponsor the Symfony project.

https://symfony.com/blog/new-in-symfony-5-4-misc-features-part-3?utm_source=Symfony%20Blog%20Feed&utm_medium=feed

созданный 3y | 3 дек. 2021 г., 09:20:05


Войдите, чтобы добавить комментарий

Другие сообщения в этой группе

Symfony 6.4.19 released

Symfony 6.4.19 has just been released. Here is the list of the most important changes since 6.4.18:

bug #59198 [Messenger] Filter out non-consumable receivers when registering ConsumeMessagesComm
26 февр. 2025 г., 12:20:03 | Symfony
Symfony 7.2.4 released

Symfony 7.2.4 has just been released. Here is the list of the most important changes since 7.2.3:

bug #59198 [Messenger] Filter out non-consumable receivers when registering ConsumeMessagesComman
26 февр. 2025 г., 12:20:03 | Symfony
Just one month to go before SymfonyLive Paris 2025 workshops begin!

SymfonyLive Paris 2025, conference in French language only, will already start in 1 month with the workshops! Have a look on the topics and join us! Schedule details are available here.

📣

25 февр. 2025 г., 15:20:33 | Symfony
New Core Team Members, 2025 Edition

A few weeks ago, I had the pleasure of announcing the formation of the Symfony UX Core Team, a dedicated group working to enhance the frontend development experience within the Symfony ecosystem. Toda

24 февр. 2025 г., 16:20:03 | Symfony
SymfonyLive Paris 2025 : Du lego de composants pour un bundle Gotenberg !

SymfonyLive Paris 2025, conference in French language only, will take place from March 27 to 28! The schedule is currently being revealed as we go along. More details are available here.

Al

24 февр. 2025 г., 13:50:07 | Symfony
A Week of Symfony #947 (17-23 February 2025)

This week, development activity focused on new security features. The upcoming Symfony 7.3 version added support for security voters to explain their vote, improved the IsGranted attribute to allow us

23 февр. 2025 г., 10:10:09 | Symfony
SymfonyLive Berlin 2025: Agentic Applications with Symfony

SymfonyLive Berlin 2025, conference held in English, will take place from April 1 to 4! The schedule is being revealed gradually. More details are available here.

We’re thrilled to announce

21 февр. 2025 г., 09:20:12 | Symfony