Symfony is proud to organize the sixth edition of the SymfonyCon, the international Symfony conference. This year, to celebrate Symfony, we decided to bring the entire community to Portugal and discover the amazing city of Lisbon. If you like Symfony and share fun with professionals, this is where you want to be on December!

Thursday 6th December 2018

Keynote by Fabien Potencier in Advanced


10:05 Using the Workflow component for e-commerce
Talk by Michelle Sanver in Advanced (1 hour)

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.

Behat Best Practices with Symfony
Talk by Ciaran McNulty in Beginner

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.

File storage for modern PHP applications.
Talk by Frank de Jonge in PHP

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!

Symfony Messenger: 6 months already and more to come
Talk by Samuel ROZE in Advanced

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.

Going crazy with Varnish: Caching pages of logged in users
Talk by David Buchmann in Beginner (1 hour)

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
Talk by Pedro Magalhães in PHP

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.

13:30 Using Symfony Forms with Rich Domain Models
Talk by Christopher Hertel, Christian Flothmann in Advanced (1 hour)

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.

One year diversity initiative
Talk by Lukas Kahwe Smith in Beginner (1 hour)

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.

How static PHP analyzer changed the way I look at code
Talk by Nicole Cordes in PHP (1 hour)

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.

14:20 Building global web apps with multi-region hosting
Talk by Jordi Boggiano in Advanced (1 hour)

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.

Building Apps for Immutable Servers
Talk by Daniel Gomes in Beginner (1 hour)

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.

Bulletproof MongoDB
Talk by Jeremy Mikola in PHP (40 minutes)

An all-too-common approach for database error handling is to log the exception, return a 500 response, 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.

Leverage the power of Symfony components within ApiPlatform
Talk by soyuka in Advanced

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!

The patterns behind Doctrine
Talk by Denis Brumann in Beginner (1 hour)

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.

When testing makes no sense
Talk by Miro Svrtan in PHP (1 hour)

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.

JeoPHPardy (game activity)
Keynote by Jeremy Mikola in Advanced

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

Friday 7th December 2018

09:00 Microservices gone wrong
Keynote by Anthony Ferrara in Advanced (40 minutes)

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.

Security: handling user access with Symfony the right way
Talk by Diana Ungaro Arnos in Advanced

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.

Webpack Encore: Tips, Tricks, Questions & Best Practices
Talk by Ryan Weaver in Beginner (1 hour)

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!

GitFlows vs GitHub flow: how we organize a problem free release process
Talk by Irina Poddubnaia in PHP (20 minutes)

GitFlows vs GitHub flow: how we organize a problem free release process

11:00 My first year with event sourcing (in Symfony)
Talk by Tim Huijzers in Advanced (1 hour)

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
Talk by Tobias Nyholm in Beginner (1 hour)

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.

Life of an IF Statement (A journey of how computers compute)
Talk by Anthony Ferrara in PHP (20 minutes)

Life of an IF Statement (A journey of how computers compute)

The Silex Sunset
Talk by Alexander M. Turek in PHP (20 minutes)

The Silex Sunset

What’s a typical Symfony 4.2 application like?
Talk by Nicolas Grekas in Advanced

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.

Modern application built from scratch: API Platform FTW
Talk by Anderson Casimiro in Beginner (40 minutes)

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.

GDPR- Masking data with Open Source tool
Talk by Thomasz Surowiec in PHP (20 minutes)

GDPR- Masking data with Open Source tool

14:20 Deploy a Symfony application on AWS Elastic Beanstalk with Docker
Talk by Romaric Drigon in PHP (20 minutes)

Getting started with AWS Elastic Beanstalk can be challenging. We will review reasons to use it, and how to easily set up a web application, developed with the Symfony framework, on a high-availability, scalable, hosting using Docker multicontainer platform.

14:50 Integrate (Vue)JS components in a Symfony app, add E2E tests with Panther
Talk by Kévin Dunglas in Advanced (1 hour)

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.

Profiling your Symfony application
Talk by Michael Cullum in Beginner

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.

What I've learnt after starting to work Symfony and PostgreSQL?
Talk by Lena Kirichok in PHP (20 minutes)

What I've learnt after starting to work Symfony and PostgreSQL?

Composer Platform Configuration
Talk by Nills Adermann in PHP (20 minutes)

Composer Platform Configuration

16:00 A Year of Symfony
Keynote by Sarah Khalil in Advanced (1 hour)

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.