KEMBAR78
Symfony Blog https://symfony.com/blog/ Most recent posts published on the Symfony project blog Thu, 23 Oct 2025 20:12:32 +0200 Thu, 23 Oct 2025 09:00:00 +0200 en <![CDATA[SymfonyCon Amsterdam 2025: How native lazy objects will change Doctrine and Symfony forever]]> https://symfony.com/blog/symfonycon-amsterdam-2025-how-native-lazy-objects-will-change-doctrine-and-symfony-forever?utm_source=Symfony%20Blog%20Feed&utm_medium=feed SymfonyCon Amsterdam 2025, our next annual international Symfony conference, will take place on: November 25 &amp; 26 with two days of hands-on workshops to learn, practice, and enhance your skills in small groups. November 27 &amp; 28 with three… Speaker Card Benjamin Eberlei

SymfonyCon Amsterdam 2025, our next annual international Symfony conference, will take place on:

  • November 25 & 26 with two days of hands-on workshops to learn, practice, and enhance your skills in small groups.
  • November 27 & 28 with three English-speaking tracks, an Unconference track, and a lively community evening.

The schedule is available here, as well as the complete list of workshop topics.

Stay in the look out for more to come!👀


🎤 New speaker announcement!

We’re thrilled to welcome Benjamin Eberlei (@beberlei@phpc.social), Chief Performance Detective, Tideways GmbH, as a speaker with the talk How native lazy objects will change Doctrine and Symfony forever

"Starting with PHP 8.4 you can implement lazy loading and proxy objects with native PHP functionality with little overhead and no code generation required. Both Doctrine and Symfony are historically using the proxy pattern with solutions and workarounds built in PHP. In this talk I will explain PHPs 8.4s native lazy objects and how it will be a game changer to both Doctrine and Symfony going forward."


SymfonyCon Amsterdam 2025 is coming fast!

🎟️ Register now and choose the ticket that suits you the best among workshop, conference and combo ticket. Check all the details and get your ticket!

🖥️ Check out the exciting 13 workshop topics on this page.

🎤 Explore the great lineup of conference talks here, featuring top-notch expert speakers as Fabien Potencier, Christopher Hertel, Robin Chalas, Tobias Nyholm, Andreas Braun, Anna Filina, Pauline Vos, Stefan Koopmanschap, Nicolas Grekas, Iain Cambridge, Sebastian Bergmann, Konrad Oboza, Alexandre Salome, Antoine Bluchet, Kévin Dunglas, Rob Allen, Mathias Arlaud, Benjamin Eberlei, Viktor Pikaev, Valentin Rusev Valentin Rusev, Romain Neutron and many others...

🫵 Participate in the Unconference track, a participant-driven format where attendees shape the content and discussions in real-time. Have a topic you're passionate about? Claim your slot by emailing us at events@symfony.com and set the stage for an unforgettable experience. Each unconference talk lasts 20 minutes with a screen and projector available on both days.

🎉 Celebrate Symfony’s 20th Anniversary with us at the Kanarie Club! Join us for an unforgettable evening of drinks, music, and good vibes on Thursday, November 27 from 7:30 to 10:30 pm at the vibrant Kanarie Club, right in the heart of De Hallen — a lively food court with 21 amazing stands (grab your favorite bites, bring them to the Kanarie club!) Dress as you like or simply add a touch of fun!✨

💻 Save the date for the Symfony hackathon on November 29. Everyone is welcome to join the hackday! Whether you're an experienced contributor or new to the community, your participation is highly valued as it brings a fresh perspective! More details are available here. The hackathon will be hosted in Volkshotel Amsterdam from 09:30 a.m. to 3:00 p.m. CET. thanks to the support of Baksla.sh.

📖 Read our attendee guide for venue, accommodation, and transportation details.

👕 Complete your Symfony Live profile to inform us of your dietary preferences, T-shirt size and talk preferences!


Joins us online!

💡Follow the "conference" blog posts to not miss anything!

Want the latest Symfony updates? Follow us and tune in from wherever you are 🌎

Banner Blog


Sponsor the Symfony project.
]]>
https://symfony.com/blog/symfonycon-amsterdam-2025-how-native-lazy-objects-will-change-doctrine-and-symfony-forever?utm_source=Symfony%20Blog%20Feed&utm_medium=feed Thu, 23 Oct 2025 09:00:00 +0200 https://symfony.com/blog/symfonycon-amsterdam-2025-how-native-lazy-objects-will-change-doctrine-and-symfony-forever?utm_source=Symfony%20Blog%20Feed&utm_medium=feed#comments-list
<![CDATA[New in Symfony 7.4: Caching HTTP Client]]> https://symfony.com/blog/new-in-symfony-7-4-caching-http-client?utm_source=Symfony%20Blog%20Feed&utm_medium=feed Contributed by Jérôme Parmentier in #59576…
Jérôme Parmentier
Contributed by Jérôme Parmentier in #59576

The HttpClient component provides a caching feature to avoid repeated HTTP requests for the same content. Internally, it uses the HttpCache class from the HttpKernel component:

use Symfony\Component\HttpClient\CachingHttpClient;
use Symfony\Component\HttpClient\HttpClient;
use Symfony\Component\HttpKernel\HttpCache\Store;

$store = new Store('/path/to/cache/storage/');
$client = HttpClient::create();
$client = new CachingHttpClient($client, $store);

// this won't hit the network if the resource is already in the cache
$response = $client->request('GET', 'https://example.com/cacheable-resource');

In Symfony 7.4, we're revamping this feature to get rid of HttpCache, base caching on the Cache component, and make the implementation fully compliant with RFC 9111.

First, define a cache pool whose adapter is tag-aware:

# config/packages/framework.yaml
framework:
    cache:
        pools:
            example_cache_pool:
                adapter: cache.adapter.redis_tag_aware
                tags: true

Then, add the new caching option to your HTTP client to enable caching and use the given cache pool:

# config/packages/framework.yaml
framework:
    cache:
        pools:
            example_cache_pool:
                # ...

    http_client:
        scoped_clients:
            example.client:
                base_uri: 'https://example.com'
                caching:
                    cache_pool: example_cache_pool

That's all. Requests sent with that client are now cached according to RFC 9111. The caching option accepts two additional keys:


Sponsor the Symfony project.
]]> https://symfony.com/blog/new-in-symfony-7-4-caching-http-client?utm_source=Symfony%20Blog%20Feed&utm_medium=feed Wed, 22 Oct 2025 09:29:00 +0200 https://symfony.com/blog/new-in-symfony-7-4-caching-http-client?utm_source=Symfony%20Blog%20Feed&utm_medium=feed#comments-list <![CDATA[SymfonyCon Amsterdam 2025: Kill the SPA]]> https://symfony.com/blog/symfonycon-amsterdam-2025-symfony-and-rust-kill-the-spa?utm_source=Symfony%20Blog%20Feed&utm_medium=feed SymfonyCon Amsterdam 2025, our next annual international Symfony conference, will take place on: November 25 &amp; 26 with two days of hands-on workshops to learn, practice, and enhance your skills in small groups. November 27 &amp; 28 with three… Kevin Dunglas Blog

SymfonyCon Amsterdam 2025, our next annual international Symfony conference, will take place on:

The schedule is available here, as well as the complete list of workshop topics.

Stay in the look out for more to come!👀


🎤 New speaker announcement!

We’re thrilled to welcome Kévin Dunglas (@dunglas), CEO, Les-Tilleuls.coop, as a speaker with the talk Kill the SPA!

"Are React, Vue, or even Hotwired still essential for creating modern websites and web applications? New web projects, even those built using Symfony, tend to be systematically written as Single Page Apps. As a result, they contain a lot of JavaScript code, which often makes them unnecessarily slow and difficult to maintain. Their search engine optimization and indexing by robots powering AI chats can also be greatly degraded.

Thanks to modern CSS, however, the situation has changed: View Transitions and Speculation Rules now make it possible to achieve a UX and a perception of fluidity similar to that offered by the best SPAs, but using a “traditional” approach, without the need for JavaScript or the complexity it introduces. In concrete terms, this means that it is once again possible to use our favorite framework and its companion Twig for what they excel at: generating server-side HTML, while maintaining excellent UI and UX quality.

During this talk, I will present the architecture of a modern Symfony application that does not depend (or depends very little) on JavaScript and is not an SPA. Then I will introduce a new Symfony UX component that takes advantage of this architecture, the Mercure protocol, and FrankenPHP to offer a feature prized by front-end developers: automatic reloading of views (while preserving states) during development."


SymfonyCon Amsterdam 2025 is coming fast!

🎟️ Register now and choose the ticket that suits you the best among workshop, conference and combo ticket. Check all the details and get your ticket!

🖥️ Check out the exciting 13 workshop topics on this page.

🎤 Explore the great lineup of conference talks here, featuring top-notch expert speakers as Fabien Potencier, Christopher Hertel, Robin Chalas, Tobias Nyholm, Andreas Braun, Anna Filina, Pauline Vos, Stefan Koopmanschap, Nicolas Grekas, Iain Cambridge, Sebastian Bergmann, Konrad Oboza, Alexandre Salome, Antoine Bluchet, Kévin Dunglas, Rob Allen, Mathias Arlaud, Benjamin Eberlei, Viktor Pikaev, Valentin Rusev Valentin Rusev, Romain Neutron and many others...

🫵 Participate in the Unconference track, a participant-driven format where attendees shape the content and discussions in real-time. Have a topic you're passionate about? Claim your slot by emailing us at events@symfony.com and set the stage for an unforgettable experience. Each unconference talk lasts 20 minutes with a screen and projector available on both days.

🎉 Celebrate Symfony’s 20th Anniversary with us at the Kanarie Club! Join us for an unforgettable evening of drinks, music, and good vibes on Thursday, November 27 from 7:30 to 10:30 pm at the vibrant Kanarie Club, right in the heart of De Hallen — a lively food court with 21 amazing stands (grab your favorite bites, bring them to the Kanarie club!) Dress as you like or simply add a touch of fun!✨

💻 Save the date for the Symfony hackathon on November 29. Everyone is welcome to join the hackday! Whether you're an experienced contributor or new to the community, your participation is highly valued as it brings a fresh perspective! More details are available here. The hackathon will be hosted in Volkshotel Amsterdam from 09:30 a.m. to 3:00 p.m. CET. thanks to the support of Baksla.sh.

📖 Read our attendee guide for venue, accommodation, and transportation details.

👕 Complete your Symfony Live profile to inform us of your dietary preferences, T-shirt size and talk preferences!


Joins us online!

💡Follow the "conference" blog posts to not miss anything!

Want the latest Symfony updates? Follow us and tune in from wherever you are 🌎

Banner Blog


Sponsor the Symfony project.
]]>
https://symfony.com/blog/symfonycon-amsterdam-2025-symfony-and-rust-kill-the-spa?utm_source=Symfony%20Blog%20Feed&utm_medium=feed Tue, 21 Oct 2025 14:30:00 +0200 https://symfony.com/blog/symfonycon-amsterdam-2025-symfony-and-rust-kill-the-spa?utm_source=Symfony%20Blog%20Feed&utm_medium=feed#comments-list
<![CDATA[New in Symfony 7.4: Uid Improvements]]> https://symfony.com/blog/new-in-symfony-7-4-uid-improvements?utm_source=Symfony%20Blog%20Feed&utm_medium=feed The Uid component provides utilities to work with unique identifiers such as UUIDs and ULIDs. In Symfony 7.4, we've added several new features related to UUIDs. Default to UUID v7… The Uid component provides utilities to work with unique identifiers such as UUIDs and ULIDs. In Symfony 7.4, we've added several new features related to UUIDs.

Default to UUID v7

Nicolas Grekas
Contributed by Nicolas Grekas in #61812

UUID v7 is a recent addition to the UUID specification that generates time-ordered UUIDs based on a high-resolution Unix Epoch timestamp source. It's an improved version over UUID v1 and UUID v6, and it's now the recommended option instead of those older versions.

Starting in Symfony 7.4, UUID v7 is used by default when creating UUID values via a factory:

namespace App\Service;

use Symfony\Component\Uid\Factory\UuidFactory;

class FooService
{
    public function __construct(
        private UuidFactory $uuidFactory,
    ) {
    }

    public function generate(): void
    {
        // both UUIDs will use UUID v7 by default
        $uuid = $this->uuidFactory->create();
        $timestampBasedUuid = $this->uuidFactory->timeBased()->create();

        // ...
    }
}

If you need to generate a different version, you can configure the default values used by the factory:

# config/packages/uid.yaml
framework:
    uid:
        default_uuid_version: 6
        time_based_uuid_version: 1
        # ...

Add Microsecond Precision to UUID v7

Nicolas Grekas
Contributed by Nicolas Grekas in #60898

The time component of UUID v7 values provides millisecond precision. However, the UUID spec mentions that "it is possible to use additional clock precision [...] to provide values that are time ordered with sub-millisecond precision".

In Symfony 7.4, we're updating UUID v7 generation to include microsecond precision. You don't have to do anything to benefit from this new feature. Just update to Symfony 7.4 and any new UUIDs you create will include this microsecond precision. This comes with a nice performance improvement that reduces the generation time by 10%.

UUID Test Factory

momito69
Contributed by momito69 in #61807

Many UUID versions include random or time-dependent parts, which makes them hard to use in tests. In Symfony 7.4, we're introducing a MockUuidFactory to make your UUIDs predictable and reproducible in tests.

First, your services using UUIDs must rely on the UuidFactory to create them:

use Symfony\Component\Uid\Factory\UuidFactory;
use Symfony\Component\Uid\Uuid;

class UserService
{
    public function __construct(
        private UuidFactory $uuidFactory
    ){
    }

    public function createUserId(): string
    {
        return $this->uuidFactory->create()->toRfc4122();
    }

    // ...
}

Then, when testing those services, use a MockUuidFactory to define the list of UUIDs that will be returned for each call to create a new UUID value:

use PHPUnit\Framework\TestCase;
use Symfony\Component\Uid\Factory\MockUuidFactory;
use Symfony\Component\Uid\UuidV4;

class UserServiceTest extends TestCase
{
    public function testCreateUserId()
    {
        $factory = new MockUuidFactory([
            UuidV4::fromString('11111111-1111-4111-8111-111111111111'),
            UuidV4::fromString('22222222-2222-4222-8222-222222222222'),
        ]);

        $service = new UserService($factory);

        $this->assertSame('11111111-1111-4111-8111-111111111111', $service->createUserId());
        $this->assertSame('22222222-2222-4222-8222-222222222222', $service->createUserId());
    }
}

In addition to the create() method, it also supports randomBased(), timeBased(), and nameBased() methods. You can also mix different UUID versions in the list of returned values.


Sponsor the Symfony project.
]]>
https://symfony.com/blog/new-in-symfony-7-4-uid-improvements?utm_source=Symfony%20Blog%20Feed&utm_medium=feed Tue, 21 Oct 2025 09:12:00 +0200 https://symfony.com/blog/new-in-symfony-7-4-uid-improvements?utm_source=Symfony%20Blog%20Feed&utm_medium=feed#comments-list
<![CDATA[SymfonyCon Amsterdam 2025: Symfony and Rust: Accelerating Hot Paths with FFI]]> https://symfony.com/blog/symfonycon-amsterdam-2025-symfony-and-rust-accelerating-hot-paths-with-ffi?utm_source=Symfony%20Blog%20Feed&utm_medium=feed SymfonyCon Amsterdam 2025, our next annual international Symfony conference, will take place on: November 25 &amp; 26 with two days of hands-on workshops to learn, practice, and enhance your skills in small groups. November 27 &amp; 28 with three… Mitchel Vroege Blog

SymfonyCon Amsterdam 2025, our next annual international Symfony conference, will take place on:

The schedule is available here, as well as the complete list of workshop topics.

Stay in the look out for more to come!👀


🎤 New speaker announcement!

We’re thrilled to welcome Mitchel Vroege, Developer, as a speaker with the talk Symfony and Rust: Accelerating Hot Paths with FFI

"I'm not going to tell you to rebuild your application in Rust. At all. I love Symfony (and PHP), we all do. But there are times when we hit a performance roadblock. Or run out of memory. Maybe even both.

In this talk, we’ll replace part of our logic with a native helper using PHP’s FFI and Rust. We’ll explore performance gains, show practical implementation steps, and discuss when native code makes sense. And finally, I’ll share a skeleton project so you can start experimenting in tonight."


SymfonyCon Amsterdam 2025 is coming fast!

🎟️ Register now and choose the ticket that suits you the best among workshop, conference and combo ticket. Check all the details and get your ticket!

🖥️ Check out the exciting 13 workshop topics on this page.

🎤 Explore the great lineup of conference talks here, featuring top-notch expert speakers as Fabien Potencier, Christopher Hertel, Robin Chalas, Tobias Nyholm, Andreas Braun, Anna Filina, Pauline Vos, Stefan Koopmanschap, Nicolas Grekas, Iain Cambridge, Sebastian Bergmann, Konrad Oboza, Alexandre Salome, Antoine Bluchet, Kévin Dunglas, Rob Allen, Mathias Arlaud, Benjamin Eberlei, Viktor Pikaev, Valentin Rusev Valentin Rusev, Romain Neutron and many others...

🫵 Participate in the Unconference track, a participant-driven format where attendees shape the content and discussions in real-time. Have a topic you're passionate about? Claim your slot by emailing us at events@symfony.com and set the stage for an unforgettable experience. Each unconference talk lasts 20 minutes with a screen and projector available on both days.

🎉 Celebrate Symfony’s 20th Anniversary with us at the Kanarie Club! Join us for an unforgettable evening of drinks, music, and good vibes on Thursday, November 27 from 7:30 to 10:30 pm at the vibrant Kanarie Club, right in the heart of De Hallen — a lively food court with 21 amazing stands (grab your favorite bites, bring them to the Kanarie club!) Dress as you like or simply add a touch of fun!✨

💻 Save the date for the Symfony hackathon on November 29. Everyone is welcome to join the hackday! Whether you're an experienced contributor or new to the community, your participation is highly valued as it brings a fresh perspective! More details are available here. The hackathon will be hosted in Volkshotel Amsterdam from 09:30 a.m. to 3:00 p.m. CET. thanks to the support of Baksla.sh.

📖 Read our attendee guide for venue, accommodation, and transportation details.

👕 Complete your Symfony Live profile to inform us of your dietary preferences, T-shirt size and talk preferences!


Joins us online!

💡Follow the "conference" blog posts to not miss anything!

Want the latest Symfony updates? Follow us and tune in from wherever you are 🌎

Banner Blog


Sponsor the Symfony project.
]]>
https://symfony.com/blog/symfonycon-amsterdam-2025-symfony-and-rust-accelerating-hot-paths-with-ffi?utm_source=Symfony%20Blog%20Feed&utm_medium=feed Mon, 20 Oct 2025 17:15:00 +0200 https://symfony.com/blog/symfonycon-amsterdam-2025-symfony-and-rust-accelerating-hot-paths-with-ffi?utm_source=Symfony%20Blog%20Feed&utm_medium=feed#comments-list
<![CDATA[New in Symfony 7.4: Security Voter Improvements]]> https://symfony.com/blog/new-in-symfony-7-4-security-voter-improvements?utm_source=Symfony%20Blog%20Feed&utm_medium=feed Security voters are one of Symfony's most powerful tools for managing permissions. They let you centralize your authorization logic and reuse it throughout your application. In Symfony 7.4, we're introducing several new features for them. Twig Functions… Security voters are one of Symfony's most powerful tools for managing permissions. They let you centralize your authorization logic and reuse it throughout your application. In Symfony 7.4, we're introducing several new features for them.

Twig Functions for Access Decisions

Florent Destremau
Contributed by Florent Destremau in #61379

Symfony already provides the is_granted() and is_granted_for_user() Twig functions so you can check permissions with voters in your templates. These functions return a boolean value indicating whether the current or specified user has the given security attribute.

In Symfony 7.4, we're adding two new Twig functions: access_decision() and access_decision_for_user(). They return an AccessDecision object, a DTO that stores the access verdict, the collection of votes, the resulting message (for example, "Access granted" or a custom access-denied message), and more.

{% set voter_decision = access_decision('post_edit', post) %}
{% if voter_decision.isGranted() %}
    {# ... #}
{% else %}
    {# before showing voter messages to end users, make sure it's safe to do so #}
    <p>{{ voter_decision.message }}</p>
{% endif %}

Add Metadata to Vote Objects

Eltharin
Contributed by Eltharin in #60085

In Symfony 7.3, we introduced the Vote object as part of a feature that explains security voter decisions. In Symfony 7.4, we're extending it so you can attach arbitrary metadata to each vote. Inside your security voter, use the extraData property of the Vote object to add any custom value:

use Symfony\Component\Security\Core\Authorization\Voter\Vote;
use Symfony\Component\Security\Core\Authorization\Voter\Voter;
// ...

class BlogPostVoter extends Voter
{
    // ...

    protected function voteOnAttribute(string $attribute, mixed $subject, TokenInterface $token, ?Vote $vote = null): bool
    {
        // ...

        // values can be of any type, not only strings
        $vote->extraData['some_key'] = 'some value';
    }
}

You can use this new feature, for example, when defining a custom access decision strategy. By default, Symfony votes can only grant, deny, or abstain, and all votes have equal weight. In a custom strategy, you could assign a score or weight to each vote (for example, $vote->extraData['score'] = 10;) and use that value when aggregating results:

// src/Security/MyCustomAccessDecisionStrategy.php
use Symfony\Component\Security\Core\Authorization\Strategy\AccessDecisionStrategyInterface;

class MyCustomAccessDecisionStrategy implements AccessDecisionStrategyInterface
{
    public function decide(\Traversable $results, $accessDecision = null): bool
    {
        $score = 0;

        foreach ($results as $key => $result) {
            $vote = $accessDecision->votes[$key];
            if (array_key_exists('score', $vote->extraData)) {
                $score += $vote->extraData['score'];
            } else {
                $score += $vote->result;
            }
        }

        // ...
    }
}

Sponsor the Symfony project.
]]>
https://symfony.com/blog/new-in-symfony-7-4-security-voter-improvements?utm_source=Symfony%20Blog%20Feed&utm_medium=feed Mon, 20 Oct 2025 09:16:00 +0200 https://symfony.com/blog/new-in-symfony-7-4-security-voter-improvements?utm_source=Symfony%20Blog%20Feed&utm_medium=feed#comments-list
<![CDATA[A Week of Symfony #981 (October 13–19, 2025)]]> https://symfony.com/blog/a-week-of-symfony-981-october-13-19-2025?utm_source=Symfony%20Blog%20Feed&utm_medium=feed This week, Symfony kept fixing bugs and refining the new features for the upcoming Symfony 7.4 and 8.0 releases. Meanwhile, we unveiled a special site to celebrate Symfony's 20th anniversary, and we published the first post in the New in Symfony 7.4 series.… This week, Symfony kept fixing bugs and refining the new features for the upcoming Symfony 7.4 and 8.0 releases. Meanwhile, we unveiled a special site to celebrate Symfony's 20th anniversary, and we published the first post in the New in Symfony 7.4 series.

Symfony development highlights

This week, 41 pull requests were merged (30 in code and 11 in docs) and 31 issues were closed (24 in code and 7 in docs). Excluding merges, 23 authors made additions and deletions. See details for code and docs.

6.4 changelog:

7.3 changelog:

7.4 changelog:

Newest issues and pull requests

Symfony Jobs

These are some of the most recent Symfony job offers:

You can publish a Symfony job offer for free on symfony.com.

SymfonyCasts Updates

SymfonyCasts is the official way to learn Symfony. Select a track for a guided path through 100+ video tutorial courses about Symfony, PHP and JavaScript.

This week, SymfonyCasts published the following updates:

They talked about us

Call to Action


Sponsor the Symfony project.
]]>
https://symfony.com/blog/a-week-of-symfony-981-october-13-19-2025?utm_source=Symfony%20Blog%20Feed&utm_medium=feed Sun, 19 Oct 2025 09:01:00 +0200 https://symfony.com/blog/a-week-of-symfony-981-october-13-19-2025?utm_source=Symfony%20Blog%20Feed&utm_medium=feed#comments-list
<![CDATA[New in Symfony 7.4: Deprecated XML Configuration]]> https://symfony.com/blog/new-in-symfony-7-4-deprecated-xml-configuration?utm_source=Symfony%20Blog%20Feed&utm_medium=feed This is the first article in a series showcasing the most important new features introduced by Symfony 7.4, which will be released at the end of November 2025. Contributed… This is the first article in a series showcasing the most important new features introduced by Symfony 7.4, which will be released at the end of November 2025.


Mathieu Lechat
Contributed by Mathieu Lechat in #60568

Symfony has supported three different configuration formats since day one: PHP, YAML, and XML. All formats provide nearly identical capabilities and equivalent performance because they are compiled back to PHP before runtime.

In recent Symfony versions, XML support was disabled by default for packages and routes. To re-enable it, you had to update the configureContainer() and/or configureRoutes() methods in the src/Kernel.php file.

In Symfony 7.4, XML configuration is officially deprecated, and starting with Symfony 8.0, it will no longer be supported. YAML will remain the default format used by Symfony and by the Symfony recipes, but you can also use PHP if you prefer a fully code-based configuration.

For reusable Symfony bundles, XML remains a popular format since it was the officially recommended option for many years. You can use the XML config to PHP tool to automatically convert your bundle's XML configuration to PHP.

Alongside this deprecation, Symfony 7.4 enhances the remaining formats with important new features.

Better YAML Autocompletion

Nicolas Grekas
Contributed by Nicolas Grekas in #61282 and #61564

JSON schemas describe the structure, constraints, and data types of JSON documents and JSON-compatible formats such as YAML. Combined with a schema-aware editor or validator (like the ones built into modern IDEs such as PHPStorm) they enable real-time validation and autocompletion.

In Symfony 7.4, new schemas are available for services and routes configuration, as well as for validation and serialization metadata. That's why updated Symfony recipes now include the following $schema: line at the top of YAML files to declare the corresponding schema:

# config/services.yaml
# yaml-language-server: $schema=../vendor/symfony/dependency-injection/Loader/schema/services.schema.json
parameters:
    # ...

services:
    # ...

# config/routes.yaml
# yaml-language-server: $schema=../vendor/symfony/routing/Loader/schema/routing.schema.json

controllers:
    # ...

PHP Array Shapes

Nicolas Grekas
Contributed by Nicolas Grekas in #61490 , #61885 and #61894

We're also exploring new ways to make PHP configuration more expressive. In Symfony 7.4, we're introducing advanced array shapes, which allow you to configure your application using structures similar to YAML but written in pure PHP.

This lets you define routes in PHP like this:

// config/routes.php
namespace Symfony\Component\Routing\Loader\Configurator;

return Routes::config([
    'route1_name' => ['path' => '/path1'],
    'when@dev' => [
        'route2_name' => ['path' => '/path2'],
    ],
]);

And define configuration as follows:

// config/packages/framework.php
namespace Symfony\Component\DependencyInjection\Loader\Configurator;

return App::config([
    'framework' => [
        'secret' => env('APP_SECRET'),
        'esi' => true,
        'session' => [
            'handler_id' => null,
            'cookie_secure' => 'auto',
            'cookie_samesite' => 'lax',
        ],
    ],
]);

These array shapes can be leveraged by static analyzers and IDEs for better insight and autocompletion, although the exact experience will depend on your editor.


Sponsor the Symfony project.
]]>
https://symfony.com/blog/new-in-symfony-7-4-deprecated-xml-configuration?utm_source=Symfony%20Blog%20Feed&utm_medium=feed Fri, 17 Oct 2025 12:30:00 +0200 https://symfony.com/blog/new-in-symfony-7-4-deprecated-xml-configuration?utm_source=Symfony%20Blog%20Feed&utm_medium=feed#comments-list
<![CDATA[SymfonyCon Amsterdam 2025: From Runtime to Resilience: Scaling PHP]]> https://symfony.com/blog/symfonycon-amsterdam-2025-from-runtime-to-resilience-scaling-php?utm_source=Symfony%20Blog%20Feed&utm_medium=feed SymfonyCon Amsterdam 2025, our next annual international Symfony conference, will take place on: November 25 &amp; 26 with two days of hands-on workshops to learn, practice, and enhance your skills in small groups. November 27 &amp; 28 with three… Paul Dragoonis

SymfonyCon Amsterdam 2025, our next annual international Symfony conference, will take place on:

The schedule is available here, as well as the complete list of workshop topics.

Stay in the look out for more to come!👀


🎤 New speaker announcement!

We’re thrilled to welcome Paul Dragoonis, (@dr4goonis), CTO, ByteHire, as a speaker with the talk From Runtime to Resilience: Scaling PHP

"Scaling PHP is about resilience and performance, not just traffic. This talk covers live demos of optimising the PHP runtime, tuning configs, and measuring FrankenPHP and PHP-FPM with tools like OpenMetrics, Grafana, and k6. Additionally, you’ll learn to avoid design flaws, architect for scalability, and gain the mindset to confidently scale PHP applications."


SymfonyCon Amsterdam 2025 is coming fast!

🎟️ Register now and choose the ticket that suits you the best among workshop, conference and combo ticket. Check all the details and get your ticket!

🖥️ Check out the exciting 13 workshop topics on this page.

🎤 Explore the great lineup of conference talks here, featuring top-notch expert speakers as Fabien Potencier, Christopher Hertel, Robin Chalas, Tobias Nyholm, Andreas Braun, Anna Filina, Pauline Vos, Stefan Koopmanschap, Nicolas Grekas, Iain Cambridge, Sebastian Bergmann, Konrad Oboza, Alexandre Salome, Antoine Bluchet, Kévin Dunglas, Rob Allen, Mathias Arlaud, Benjamin Eberlei, Viktor Pikaev, Valentin Rusev Valentin Rusev, Romain Neutron and many others...

🫵 Participate in the Unconference track, a participant-driven format where attendees shape the content and discussions in real-time. Have a topic you're passionate about? Claim your slot by emailing us at events@symfony.com and set the stage for an unforgettable experience. Each unconference talk lasts 20 minutes with a screen and projector available on both days.

🎉 Celebrate Symfony’s 20th Anniversary with us at the Kanarie Club! Join us for an unforgettable evening of drinks, music, and good vibes on Thursday, November 27 from 7:30 to 10:30 pm at the vibrant Kanarie Club, right in the heart of De Hallen — a lively food court with 21 amazing stands (grab your favorite bites, bring them to the Kanarie club!) Dress as you like or simply add a touch of fun!✨

💻 Save the date for the Symfony hackathon on November 29. Everyone is welcome to join the hackday! Whether you're an experienced contributor or new to the community, your participation is highly valued as it brings a fresh perspective! More details are available here. The hackathon will be hosted in Volkshotel Amsterdam from 09:30 a.m. to 3:00 p.m. CET. thanks to the support of Baksla.sh.

📖 Read our attendee guide for venue, accommodation, and transportation details.

👕 Complete your Symfony Live profile to inform us of your dietary preferences, T-shirt size and talk preferences!


Joins us online!

💡Follow the "conference" blog posts to not miss anything!

Want the latest Symfony updates? Follow us and tune in from wherever you are 🌎

Banner Blog


Sponsor the Symfony project.
]]>
https://symfony.com/blog/symfonycon-amsterdam-2025-from-runtime-to-resilience-scaling-php?utm_source=Symfony%20Blog%20Feed&utm_medium=feed Fri, 17 Oct 2025 10:30:00 +0200 https://symfony.com/blog/symfonycon-amsterdam-2025-from-runtime-to-resilience-scaling-php?utm_source=Symfony%20Blog%20Feed&utm_medium=feed#comments-list
<![CDATA[SymfonyCon Amsterdam 2025: Inside the first Git commit: powerful ideas behind a minimal start]]> https://symfony.com/blog/symfonycon-amsterdam-2025-inside-the-first-git-commit-powerful-ideas-behind-a-minimal-start?utm_source=Symfony%20Blog%20Feed&utm_medium=feed SymfonyCon Amsterdam 2025, our next annual international Symfony conference, will take place on: November 25 &amp; 26 with two days of hands-on workshops to learn, practice, and enhance your skills in small groups. November 27 &amp; 28 with three… Valentin Rusev

SymfonyCon Amsterdam 2025, our next annual international Symfony conference, will take place on:

The schedule is available here, as well as the complete list of workshop topics.

Stay in the look out for more to come!👀


🎤 New speaker announcement!

We’re thrilled to welcome Valentin Rusev, as a speaker with the talk Inside the first Git commit: powerful ideas behind a minimal start

"In this talk, we will dissect the first Git commit by Linus Torvalds and uncover the powerful software design principles embedded in its earliest code. We will explore how Git’s choice of data structures (like immutable content-addressed blobs and trees) laid the foundation for reliability, correctness, and performance.

We will also highlight how Git is a brilliant embodiment of Unix philosophy: small, composable tools; reliance on the filesystem; text-based formats; and simplicity in interface with power in composition. Even in its minimal form, Git introduced key operations such as SHA-1 hashing, snapshot storage, and a filesystem-based object database that collectively reflect deep design clarity."


SymfonyCon Amsterdam 2025 is coming fast!

🎟️ Register now and choose the ticket that suits you the best among workshop, conference and combo ticket. Check all the details and get your ticket!

🖥️ Check out the exciting 13 workshop topics on this page.

🎤 Explore the great lineup of conference talks here, featuring top-notch expert speakers as Fabien Potencier, Christopher Hertel, Robin Chalas, Tobias Nyholm, Andreas Braun, Anna Filina, Pauline Vos, Stefan Koopmanschap, Nicolas Grekas, Iain Cambridge, Sebastian Bergmann, Konrad Oboza, Alexandre Salome, Antoine Bluchet, Kévin Dunglas, Rob Allen, Mathias Arlaud, Benjamin Eberlei, Viktor Pikaev, Valentin Rusev Valentin Rusev, Romain Neutron and many others...

🫵 Participate in the Unconference track, a participant-driven format where attendees shape the content and discussions in real-time. Have a topic you're passionate about? Claim your slot by emailing us at events@symfony.com and set the stage for an unforgettable experience. Each unconference talk lasts 20 minutes with a screen and projector available on both days.

🎉 Celebrate Symfony’s 20th Anniversary with us at the Kanarie Club! Join us for an unforgettable evening of drinks, music, and good vibes on Thursday, November 27 from 7:30 to 10:30 pm at the vibrant Kanarie Club, right in the heart of De Hallen — a lively food court with 21 amazing stands (grab your favorite bites, bring them to the Kanarie club!) Dress as you like or simply add a touch of fun!✨

💻 Save the date for the Symfony hackathon on November 29. Everyone is welcome to join the hackday! Whether you're an experienced contributor or new to the community, your participation is highly valued as it brings a fresh perspective! More details are available here. The hackathon will be hosted in Volkshotel Amsterdam from 09:30 a.m. to 3:00 p.m. CET. thanks to the support of Baksla.sh.

📖 Read our attendee guide for venue, accommodation, and transportation details.

👕 Complete your Symfony Live profile to inform us of your dietary preferences, T-shirt size and talk preferences!


Joins us online!

💡Follow the "conference" blog posts to not miss anything!

Want the latest Symfony updates? Follow us and tune in from wherever you are 🌎

Banner Blog


Sponsor the Symfony project.
]]>
https://symfony.com/blog/symfonycon-amsterdam-2025-inside-the-first-git-commit-powerful-ideas-behind-a-minimal-start?utm_source=Symfony%20Blog%20Feed&utm_medium=feed Thu, 16 Oct 2025 14:30:00 +0200 https://symfony.com/blog/symfonycon-amsterdam-2025-inside-the-first-git-commit-powerful-ideas-behind-a-minimal-start?utm_source=Symfony%20Blog%20Feed&utm_medium=feed#comments-list