Skip to content

SymfonyCon Lisbon 2018

December 6 – 8, 2018 • Lisbon (Portugal)

illu-city-left Created with Sketch.
illu-city-right Created with Sketch.

Keynote Fabien Potencier

TBA

Behat Best Practices with Symfony Ciaran McNulty

Behat is widely used as part of a Behaviour Driven Development lifecycle, but it's also widely misused. In this talk Ciaran will explain the BDD process, and show the best practices for using Behat including: writing good scenarios, driving service development from scenarios, fast UI testing, and using Behat and the Symfony2Extension.

Using the Workflow component for e-commerce Michelle Sanver

We got the task to make an order API, from open order, to delivered, with payments in between and after. So there are naturally a lot of states, and a lot of transitions where we needed to calculate the prices correctly and handle credit card transfers. Keeping track of all of this, and when we need to do what, ensuring that an order is always up to date, and that it has the data it needs, and that we send good error messages when a user can not do an action, was a challenge for us until we discovered the workflow component. This is a real happy use case story where I will show you how we did this, and how much more straightforward it was for us to build an otherwise complex system using the workflow component.

File storage for modern PHP applications. Frank de Jonge

Many PHP applications need to store files. There are many different reasons to store file, and not all filesystems are created equally. How can we identify our needs? Which filesystem is best for your use-case? How can we ensure our future needs are not blocked by the code we write today? In this talk we'll explore how filesystem abstraction and general coding guidelines can improve our application's and make them future proof!

Going crazy with Varnish: Caching pages of logged in users David Buchmann

You know how HTTP caching works but need more? In this talk we look into ways to cache personalized content. We will look at Edge Side Includes (ESI) to tailor caching rules of fragments, and at the user context concept to differentiate caches not by individual user but by permission groups. A big help to leverage this concept is the FOSHttpCache in combination with either Varnish or the Symfony HttpCache reverse proxy.

Changing PHP Pedro Magalhães

PHP releases a new minor version every year. Major versions happen when there are enough changes that justify to do so. Who is making those changes and how does that process work? What is the process to get an RFC to vote and the subsequent merge of the code? How can I make my first contribution? Is there anything I can do even if I don't know C? If you are intrigued by PHP internals, this talk is for you.

Symfony Messenger: 6 months already and more to come Samuel ROZE

The Messenger component brings asynchronous processing to Symfony: using message bus(es) you are able to decouple your application and route some (or all) of these "messages" to transports such as the built-in AMQP transport. It’s been more than 6 months since we’ve merged the new Messenger component in Symfony. We will explore the different use cases it has been used for so far and how it will continue to involve in order to facilitate even more.

How static PHP analyzer changed the way I look at code Nicole Hummel

Let me introduce you to the world of static PHP code analyzers. I'd like to show you which tools exists, how to use them and how they help you to improve your code quality.

One year diversity initiative Lukas Kahwe Smith

Last year in Cluj the diversity initiative was announced by Fabien. This talk aims to give an overview how those efforts were organized, what was done as part of the initiative and what progress was made. Both increasing how welcoming we are to people from all backgrounds as well as community reach out to help grow the Symfony community. Finally we will look at what could be the next steps this initiative.

Using Symfony Forms with Rich Domain Models Christian Flothmann, Christopher Hertel

With the popularisation of DDD people started shifting from anemic models with only getters and setters to a rich model describing the state changes in specific methods. This way of designing models does not play well with Symfony forms. User provided input is inherently invalid while we want to maintain certain invariants in our domain model. A common approach to overcome these limitations is to create data transfer objects our forms are then bound to. This can lead to lots of mapping & glue code that might be cumbersome to write and maintain. But couldn’t we do better? In this talk we will discuss the different aspects of a rich domain model that makes it hard to use it in conjunction with the Form component. We will then look at the possibilities to hook into the data flow of the form handling and discover how we can modify it to interact seamlessly with our model.

Bulletproof MongoDB Jeremy Mikola

An all-too-common approach for database error handling is to log the exception, return a 500 reasponse, and move on to the next request. MongoDB and its PHP driver have an array of features that can greatly improve an application's resiliency in the face of unexpected errors. This talk will examine how the driver monitors connections to a cluster and look at how we can tune its behavior to meet an application's unique needs. We'll also demonstrate how PHP applications can take advantage of newer features such as retryable writes and multi-document transactions to guarantee ACID data integrity without having to fall back to PDO and an SQL database.

Building Apps for Immutable Servers Daniel Gomes

Immutable Servers are not new and they are not that simple to achieve. However, the advantages of having Immutable Servers versus Snowflake Servers are worth it. In this talk, I will explain the differences between Snowflake and Immutable Servers and also what considerations you should have while developing your App. I will also share which tools and strategies you can use to build Immutable Servers.

Building global web apps with multi-region hosting Jordi Boggiano

This session will explore various setups and case studies from my attempts at hosting sites used by global audiences. There are many ways this can be achieved with different levels of success, budgets and global-ness. The talk will touch on Terraform, AWS, global DNS resolution and CDNs amongst other things.

When testing makes no sense Miro Svrtan

If you look at the stage of any conference in the PHP world, people are preaching testing,testing,testing ... If you on the other hand look at the community, the percentage of people writing tests is really low. As a person who went from 'How can I ask for more time/money/resources for testing?' through 'ask for forgiveness instead of permission', to person who writes tests a lot, I still believe testing doesn't make sense. No, it doesnt make sense for all and everyone, often enough it makes no sense for me too. This talk will explore that fuzzy line when you have to shift your mind from one side to the other: in both directions.

The patterns behind Doctrine Denis Brumann

How does Doctrine talk to your database? What are Data Mapper, Unit Of Work, and Identity Map? These are the questions I want to answer in this talk. We will look at how Doctrine ORM implements them and what they are there for. Finally we will look at how they compare to Active Record and what the benefits and drawbacks are to help you choose which one fits your needs best.

Leverage the power of Symfony components within ApiPlatform Antoine Bluchet

ApiPlatform is great for building API-first software. Even better, it's build on top of Symfony! Did you hear about Symfony's Workflow component? Or the brand new Messenger component? They offer powerful tools! For example, a pizza order can take multiple statuses, each one in transition with another (order, pay, wait, eat). This is a workflow. While waiting for the product, it needs to be cooked! Every time the order is paid, we have to send an instruction to the kitchen. Today, why don't we automatically push that message? Through a real-life use case, I will demonstrate how well these two fit on top of our Symfony-based API!

JeoPHPardy (game activity) Jeremy Mikola

The Symfony Form component did not appreciate me leaving this blank.

Microservices gone wrong Anthony Ferrara

Microservices are the latest architectural trend to take the PHP community by storm. Is it a good pattern? How can you use it effectively? In this talk, we'll explore real world experience building out a large scale application based around microservices: what worked really well, what didn't work at all, and what we learned along the way. Spoiler alert: we got a lot wrong.

Webpack Encore: Tips, Tricks, Questions & Best Practices Ryan Weaver

With Webpack, your JavaScript & CSS code can have superpowers you've only dreamed up. And with Symfony's Webpack Encore, you can get all of this with almost zero setup time! In this talk, we'll quickly learn the basics of Webpack Encore, then, turn to the lessons we've learned over the past year: answer popular questions and explore common problems people run into when moving to Encore. We'll also dive into a host of lesser-known best practices that you can follow to make sure your frontend coding is as streamlined as possible. A modern frontend build system: all in the time of one talk!

Security: handling user access with Symfony the right way Diana Ungaro Arnos

We often overlook a central security requirement that any application needs to meet: controlling users' access to data and functionality. Usually, we handle user access through the combination of 3 security mechanisms: authentication, session management and access control. We will take a look at the Symfony's Security component powerful tools and see how to use them to handle user access the right way.

My first year with event sourcing (in Symfony) Tim Huijzers

Over the last couple of years, I have heard of Event sourcing but didn't really know where to start until I did a tutorial at DPC '17. After having some basic information it was time to start a Hackathon and after that something production worty. In this talk I will try to give the best information to get started and to know some of the problems you can face if you begin event-sourcing.

Symfony 4 internals Tobias Nyholm

Symfony is a request and response framework. But what about all that magic that happens around your code? Why isn’t autowring slowing things down? And how is it that Symfony components can be so decoupled but sill play so well together? I will show you the Symfony internals and its architecture. This talk will go over the architecture of Symfony. We will follow the request and the response paths throw the framework. We will do some stops at the components that are more awesome than others. This talk is perfect for you who is working with Symfony or Laravel and want to understand what the framework actually is doing for you.

Modern application built from scratch: API Platform FTW Anderson Casimiro

Scenario: You had an awesome idea. A brand new business. So you have to test it‘s adherence to market… as soon as possible. How? Fortunately we have Symfony and API Platform. This session will cover main topics to build a real world project on top of REST and GraphQL APIs with modern authentication while delivering clients and documentation. Barely touching PHP code for that.

What’s a typical Symfony 4.2 application like? Nicolas Grekas

Symfony's configuration system has improved *a lot* in recent years. Version 4.2 brings a lot of minor improvements that all together give an even better developer experience. Let's step back and look at how we can tackle all of the most common problems using the new approaches! This will include tricks for configuring services as *easily* as possible, handling different environment configuration and the hugely important topic of environment variables and secrets. Best of all, we'll discuss some strategies to migrate your existing apps so you're never going to be left behind.

Profiling your Symfony application Michael Cullum

A 1 second delay on an e-commerce site can result in a 7% reduction in your conversion rate; but profiling isn't just important in e-commerce when limited resources are available. Profiling is really important and there are now a host of tools to help you profile your application through means other than naive profiling. In this talk we'll look at how to identify bottlenecks in your application using a variety of tools; and how we can use those profiler results to improve our Symfony applications' performance.

Integrate (Vue)JS components in a Symfony app, add E2E tests with Panther Kévin Dunglas

Thanks to the new capabilities of the web platform (web components, Progressive Web Apps…) and the rise of modern JS libraries (Vue, React, Angular) almost all modern Symfony applications must leverage the frontend ecosystem. Symfony 4 embed many gems that make it easy to integrate modern JavaScript within the framework, including the first component entirely written in JS: Webpack Encore. In Symfony 4.2, another component that is super convenient for apps containing JS code has been released: Panther, a PHP library compatible with BrowserKit, that drives real web browsers to create end-to-end (E2E) tests with ease. During this talk, I'll show you how to cleanly integrate modern JavaScript code with Symfony and Twig and how to test such applications using Panther. The examples will use VueJS, because it’s probably the easiest JS framework to get started with as a PHP developer, but all the tips and tricks will be applicable with other libraries such as React or Angular.

A Year of Symfony Sarah Khalil, Fabien Potencier

Let's review what happened during the last year: basically we'll see and/or discover nice new features that appeared since the last year.

Sponsors

Diamond Sponsors

Gold Sponsors

Silver Sponsors

Bronze Sponsors

Lanyard Sponsor

Community Sponsors

Did you miss SymfonyCon Lisbon 2018?

Join us at an upcoming conference!

SymfonyOnline June 2025

Online

June 12 – 13, 2025

Talks are in English

SymfonyCon Amsterdam 2025

Amsterdam / Netherlands

November 27 – 28, 2025

Talks are in English

SymfonyLive Paris 2026

Paris / France

March 26 – 27, 2026

Talks are in French

SymfonyLive Berlin 2026

Berlin / Germany

April 23 – 24, 2026

Talks are in English