Schedule is not complete yet

We're still selecting talks and speakers for SymfonyWorld Online 2021 Winter Edition. The following list only shows the already confirmed talks. Come back in a few days to see the full schedule.

Working with Twig in Symfony “Tips and tricks”

William Pinaud

Twig is really linked with Symfony, but rarely gets love during online conferences.

⚡️ Yet, it's incredibly powerful and useful in many ways, to save source code writing, to achieve common algorithmic operations, etc.

This talk goes through a few interesting things regarding Twig:
🌾 the Twig / Symfony bridge
🌾 good practices with usage (SEO, performance, directory architecture, forms, etc.)
🌾 general information like coding standards, escaping, philosophy, etc.
🌾 how to extend Twig and why you would need to do such a thing
🌾 smart tricks you probably never thought about
🌾 usages and REX on advanced functionalities (caching, translations, etc.)
🌾 real life examples, through OROCommerce, Sylius, Drupal, Symfony UX, etc.

Let's show some love to our favorite templating engine! 💚

Decoupling your application using Symfony Messenger and events

Hugo Monteiro

Web applications get more complex over time.
We start with a simple application, create a business on top of it. Start hiring people, and all of a sudden the code does not talk in the same business language. It becomes harder to change.

There are strategies like Domain Driven Design that shows how to put business rules into your code and publish domain events that can be consumed asynchronously by another service.

For example, when a booking is made, we want to send an invoice, reacting to a Booking was confirmed domain event.
By decoupling the code with domain events we have the help of Symfony Messenger.

Symfony messenger allow us to simplify our business allowing to publish and react to those domain events, no matter where we publish them. We can even create specific alarms on some specific events that are important to our business and specific retry strategies.

From Doctrine ORM to MongoDB ODM

Andreas Braun

In this talk, you will see how a relational schema can sometimes be stored more efficiently in other databases (MongoDB in this case), without losing familiar tools.

After starting with a sample schema, we will focus on how to efficiently store and read data in MongoDB, and what tools the MongoDB PHP driver provides for you to focus on what's important: your customer's data.

My prod is down, let's escape from Service Oriented Architecture Hell

Clément Bertillon

Once upon a time, a Service Oriented Architecture. One day, an issue appeared on the frontend, but no one knew which service was breaking the call sequence.

During this talk, an inside man with Blackfire as a main weapon, will demonstrate how he survived in a flood of requests and services. Thus to prevent his production from remaining down for too long

How to handle dynamic data structure ?

Hubert Lenoir

Storing data in your applications is a recurring task. But what happens when the structure of the data needs to change without redeploying? For example:

- E-commerce products with different attribute combinations
- Dynamic form values configured by users
- Different sets of metrics on monitored services

To solve this problem, we can use the (unloved) Entity-Attribute-Value data model. But why is it considered an anti-pattern by some developers? Let’s see together how this problem has been solved by different PHP projects like Sylius or Drupal and how Symfony can solve (of course it does) related major problems.

Using the SecurityBundle in Symfony 6

Wouter de Jong

During the past two years, a lot of things have changed in Symfony Security. While the main concepts are the same, features have been changed, removed or introduced.

I'll be sharing my personal "best practices" using all the new security functionality in Symfony 6. And we might find some hidden new features that can help you customizing security to fit your needs. By the end of the talk, you'll be ready to maintain and set-up fully secured applications with Symfony 6!

Tools for upgrading Symfony Applications

Malte Wunsch

Malte's web agency started building web applications 24 years ago, using Symfony for the last 10 years. Dozens of these applications are still in operation and are developed further each year. You can imagine there is a lot of legacy code, and it grows with every new Symfony version, with every new PHP version, with growing developer experience and new development practices.

If you are like Malte and neither want to let this legacy code go moldy nor want to update it manually, have a peek into his 2021 toolbox for upgrading Symfony applications: tools for code style, feature determination, dependency management, batch replacements, static analysis and even semi-automatic upgrades for minor and major Symfony versions.

Vulnerabilities and Security Round Trip


The Symfony Core Team put a lot of effort into making the Framework and the Components safe and trustable.

But not everything is under the maintainer's control; when building an application, we have to take care of using the libraries correctly, upgrading the dependencies, and, of course, not introducing security issues by ourselves.

In this talk, we will see several cases of security issues, what are their
impacts and especially how to fix them.

We also take time to define an "upgrade" policy to ensure that your application is not running a disclosed vulnerability.

Give your Traditional Site the "single-page-app" Feel with Turbo

Ryan Weaver

One of the biggest draws to building a "single page app" (SPA) is that full page refreshes are gone, giving users a quick and responsive experience. And, until recently, it seemed like you needed to choose between a "responsive SPA" *or* a "traditional" app... which are often much simpler to build.

But... that's a lie! Thanks to Turbo, we can now build traditional applications that return HTML *and* have the "no-refresh" SPA experience.

In this talk, we'll look how we can incrementally convert an existing application into a Turbo-powered app with zero full page refreshes. This includes tips for how you write your JavaScript, cleaning up Turbo "previews" and other pitfalls.

We'll also get a primer on Turbo Frames and the *super* cool Turbo Streams, which allow you to (with Mercure) update any part of any user's page in real time!

So lets go build a traditional app *and* give our users the quick experience they deserve!

Building a SaaS product with Symfony : tips and tricks

Titouan Galopin

After several years of experience building Software As A Service products, I would like to share with you the crucial and less crucial tips on how to build a technically effective platform while focusing on your business. We will talk about how to build great subscription mechanisms, how to leverage EasyAdmin, why and how you should rely on other platforms (Stripe, Sentry, SymfonyCloud) and finally how you can plan your software architecture for growth.

Symfony Components and Design Patterns

Łukasz Chruściel

There are so many Symfony components already, and they have some pretty neat perks. But have you seen them in action?

Design patterns are not a silver bullet. They will never resolve your problem on their own. On the other hand, design patterns provide a common ground for developers without going into details and could be used as building bricks to solve some more advanced problems.

During my presentation, I will take a closer look and explain the appliance of selected design patterns. What is more, I will take advantage of the Symfony ecosystem to implement them with ease.

I will do the presentation on sample code that developers will understand at all levels of expertise.

Static code analysis: how I learned to love the tool

Alexander M. Turek

A year ago, I took over a legacy codebase, with zero tests and a full bug tracker. My team and I had nothing to lose and as an experiment, we introduced a static code analysis tool. While this made our situation look even more dire than before, we never looked back.

Let's explore what a static code analyzer can do for you. What issues deserve to be fixed? How can I help the tool understand my code? And even more importantly: When can we ignore suggestions made by the tool?

Symfony BC Promise demystified

Robin Chalas

Everyone using Symfony needs to customize a built-in feature at some point, either to fit some specific business requirements or just to perform some extra tasks. Sometimes, that requires to change the way some core services are wired, which often leads to friction at time to upgrade.

Should you just copy/paste the feature code and change it to your needs then?
Fortunately, no.
Most Symfony features are designed in a way that makes it possible to extend them somehow, with little or no tight coupling.

In this talk, we will review the factors that should be taken into account in order to use and extend Symfony's code the right way, based on real-word examples and a deep dive into the backward-compatibility promise, plus some tips pulled out of my maintainer hat.

Symfony and Docker: a refreshing new experience

Kévin Dunglas

Recently, new configurators for Docker and Docker Compose have been added to Symfony Flex.
This means that Symfony can now transparently add the services and PHP extensions needed by your preferred packages!

You want to use Doctrine ORM? So you need a database and the related PDO extension! We’ve got you covered.
You use the mailer? So you want MailCatcher in your development environment? Let’s do this.
You want Panther? so you need Chrome and ChromeDriver! No problem!

But there is more: we now offer you Docker skeletons that take advantage of these new capabilities, and that you can use locally, but also in your CI system and in production!

Let's play a game with Blackfire Player

Marcin Czarnecki

How to improve performance testing of your application? The best way is to include performance test into your CI pipeline! Based on the examples from GOG Store, let's check how to integrate Blackfire Player with Docker and Continuous Integration pipelines!

Everything about Symfony 6

Nicolas Grekas

Symfony 6 is the culmination of 2 years of hard work by the community. It embeds all the new features added during the development of Symfony 5, but also removes all the features deprecated during the same period. With PHP 8.0 as the minimum supported version, Symfony 6 is also an opportunity to embrace new language features.

Let's do a retrospective of what's we did together. Want to know about the major new features? How we modernized the codebase? If Symfony is here to stay? This is what this conference will tell you about.