Stable Release in branch 5.1
5.1.11
Released 27 Jan 2021
(5 years ago)
SoftwareSymfony
Version5.1
Status
End of life
Supported
PHP versions
PHP ≥ 7.2.5
Initial release5.1.0
31 May 2020
(6 years ago)
Latest release5.1.11
27 Jan 2021
(5 years ago)
End of bug fixesJan 2021
(Ended 5 years ago)
End of security fixesJan 2021
(Ended 5 years ago)
Release noteshttps://github.com/symfony/symfony/releases/tag/v5.1.11
Source codehttps://github.com/symfony/symfony/tree/v5.1.11
Documentationhttps://symfony.com/doc/current/index.html
Downloadhttps://symfony.com/download
Symfony 5.1 ReleasesView full list

What Is New in Symfony 5.1?

Symfony 5.1 brings a set of focused enhancements and new features, primarily improving developer experience and expanding component capabilities. This release continues the framework's modernization without introducing breaking changes from 5.0.

Category Key Changes
New Features PHP 8 attributes for routing & validation, UID component, Notifier updates, new Mailer events.
Improvements Better PHPDoc support in HttpClient, Messenger serializer context, lock component upgrades.
Deprecations Some legacy options in Messenger, HttpFoundation, and Form components are marked for removal.

How does Symfony 5.1 integrate PHP 8 attributes?

Symfony 5.1 adds experimental support for using PHP 8 attributes to define routes and validation constraints. This provides a native PHP alternative to using YAML, XML, or annotations from Doctrine.

You can now place a #[Route] attribute directly on controller methods. For validation, use constraints like #[Assert\NotBlank] on class properties. In practice, this reduces external dependencies and keeps configuration closer to your code.

use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Constraints as Assert;

class BlogController
{
    #[Route('/blog/{slug}', name: 'blog_show')]
    public function show(
        #[Assert\NotBlank]
        string $slug
    ) {
        // ...
    }
}

What does the new UID component offer?

The new UID component provides tools to generate and represent unique identifiers like UUIDs and ULIDs. It offers value objects for these identifiers, making them first-class citizens in your domain.

You can generate UUIDs (Uuid::v4()) or time-based ULIDs (Ulid::generate()). These objects are immutable, support binary/string representation, and can be used in Doctrine as embeddables. This matters because it standardizes a common need across applications with a robust, testable solution.

What improvements were made to the HttpClient?

The HttpClient received updates for better interoperability and debugging. PHPDoc comments were added across the codebase, improving IDE auto-completion for response arrays and options.

You can now more easily trace requests using the HttpClient::withOptions() method, which creates a new client instance with merged options. This is useful for setting specific headers or timeouts for a subset of requests without affecting the main client configuration.

What new Mailer events were introduced?

Symfony 5.1 adds two new events to the Mailer component: MessageEvents and FailedMessageEvent. These events give you finer-grained control over the email sending process.

MessageEvents allows you to collect profiling information for all messages sent during a request. FailedMessageEvent is dispatched when an email fails to send, providing the raw message and the exception. This is crucial for implementing custom retry or logging logic for email failures.

How has the Notifier component been expanded?

The Notifier component, introduced in 5.0, gained several new bridges and transports in 5.1. It now supports sending notifications through Slack, Microsoft Teams, and Firebase.

This expansion means you can integrate real-time alerting and user notifications using a unified Symfony API. The underlying architecture remains the same: you create a notification, define its channels (like chat or email), and the notifier handles delivery.

FAQ

Are PHP 8 attributes ready for production use in Symfony 5.1?
The support is marked as experimental. While functional, the syntax might see adjustments in future releases based on community feedback. For stable, long-term projects, sticking with annotations or YAML/XML configuration for now is a safe choice.

Should I replace all my annotations with attributes immediately?
No, there's no need. Attributes are an additional option, not a replacement. Existing annotation, YAML, and XML configuration will continue to work. You can start using attributes in new code if you prefer the native PHP syntax.

What is the main advantage of the new UID component over ramsey/uuid?
The main advantage is framework integration. It's a first-party component maintained by the core team, with built-in support for Doctrine types and Symfony Serializer. It's a lightweight, purpose-built solution for Symfony applications.

Do the new Mailer events replace the existing SentMessageEvent?
No, they complement it. The new events provide more specific hooks. Use MessageEvents for profiling and debugging all messages in a request, and FailedMessageEvent to handle individual sending errors explicitly.

Is the improved PHPDoc in HttpClient just for IDE support?
Primarily, yes. It enhances the developer experience by providing better code completion and static analysis. However, it also serves as official documentation for the expected array structures, making the component's API clearer.

Releases In Branch 5.1

VersionRelease date
5.1.1127 Jan 2021
(5 years ago)
5.1.1018 Dec 2020
(5 years ago)
5.1.929 Nov 2020
(5 years ago)
5.1.828 Oct 2020
(5 years ago)
5.1.704 Oct 2020
(5 years ago)
5.1.627 Sep 2020
(5 years ago)
5.1.502 Sep 2020
(5 years ago)
5.1.431 Aug 2020
(5 years ago)
5.1.324 Jul 2020
(6 years ago)
5.1.215 Jun 2020
(6 years ago)
5.1.112 Jun 2020
(6 years ago)
5.1.031 May 2020
(6 years ago)
5.1.0-RC226 May 2020
(6 years ago)
5.1.0-RC116 May 2020
(6 years ago)
5.1.0-BETA105 May 2020
(6 years ago)