From September 27th to 28th 2018, over 350 engineers, developers and IT professionals will meet at Westminster, for SymfonyLive London 2018. Symfony is proud to organize the 7th edition of the British Symfony conference and to welcome the Symfony community from all over the UK.

Friday 28th September 2018

Keynote by Fabien Potencier in Track A


10:00 What is accessibility, and why I should care?
Talk by Sandra Eriksson in Track A (1 hour)

Recently, the European Union has embraced new legislation in order to improve accessibility in ICT products (Information Communications Technology) for users with disabilities. This requires web programmers within the public sector and its suppliers to know how to develop accessible web applications. A 40-minute speech about this area will not turn listeners into accessibility experts but hopefully work as an eye-opener. My goal is to spread some light on the accessibility area, WCAG (Web Content Accessibility Guidelines) and inspire some of you to look into it some more.

Symfony without the framework bundle
Talk by Tobias Nyholm in Track B (1 hour)

You may have heard people saying that ”Frameworks are bad” or ”Symfony is slow”. It is time to investigate why those people are saying that. We want to see if they are really smart or just stuck in the past. This talk will go over performance to see what you can do to make an application run faster. (There are no quick fixes) We will also see how we can build applications that responds in less that 15ms and then work towards even faster than that.

Panther: test your Symfony apps with real web browsers
Talk by Kévin Dunglas in Track A

From a few lines of jQuery to modern React/Vue… PWA, Symfony apps always contain JavaScript code. Unfortunately, the SF functional test helper and the Goutte web scrapping lib aren’t able to execute JS code. It means that they cannot assert on client-side generated HTML, test if an element is visible or not, deal with alert boxes or detect if a bug occurs only with a specific browser. Panther is a brand new e2e testing and web scrapping library written in PHP that drives real browsers thanks to the WebDriver protocol from the W3C. It implements the exact same API than the BrowserKit component. It means than existing SF tests and Goutte scripts work without modification… but this time JS will be executed! The tool also brings new capabilities including taking screenshots, or executing custom JS in the execution context of the web page. To install Panther you only have one command to run, and it doesn’t need any dependency to install Panther. Let’s meet the feline!

Using Symfony Forms with Rich Domain Models
Talk by Christian Flothmann, Christopher Hertel in Track B (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.

GDPR for web development
Talk by Gawain Lynch in Track A (1 hour)

The General Data Protection Regulation (GDPR) came into effect on 25 May 2018. In the lead-up, organizations struggled to interpret and implement the regulation. In the coming year or two, regulators are likely to refine their guidelines in response to emerging industry practices and cases of breaches. In the meantime, regulators advise organizations to follow “best practices” and maintain an audit trail. What does this mean for web developers? In this talk we give an overview of the main principles of GDPR and their relevance to web development. For front-enders, key issues relate to ensuring users are informed about all use cases for their data, “nudging” users to give informed consent, and how users can exercise their “right to be forgotten.” For back-enders, GDPR especially presents problems concerning data security, data storage, and keeping records of user consent. We describe use cases for back-end and front-end developers working for Symfony and its ecosystem.

Take your Http caching to the next level with xkey & Fastly
Talk by André ®ømcke in Track B (1 hour)

FOSHttpCache is extending Symfony in many ways, one recent addition is support for using Varnish xkey which allows for grace handling and faster performance. This also happens to be usable for use with Fastly with a bit of extension. Talk shows usage with a example application and also shows how this is used in eZ Platform v2 to gain higher cache hit ratio. -------- Demo application with Varnish xkey: Fastly Proxy Client example:

Symfony Cache: a premium recipe to fast apps
Talk by Nicolas Grekas in Track A

Introduced in version 3.1, the Symfony Cache component has 3 promises: performance, safety, and ease of use. Internally and by default, we are already using it out of the box for system caches. It started as a reference implementation of the PSR-6 standard. Along the years and by contributions from the community, it gained a battle-tested feature-set and adapters for many storages. But the next version, 4.2, is the bigger milestone. With some raw examples and benchmarks, let's review how to select the best backend for your needs, wire them in your apps, do tags-based invalidation, protect against cache stampede, etc. Caching might be the most efficient strategy to fast apps.

Running Symfony on AWS Lambda
Talk by Neal Brooks in Track B (1 hour)

Ever find yourself deploying your Symfony app to your EC2 boxes and wondering if you're using your resources wisely? You're almost certainly paying for CPU time you're not using, and scaling PHP applications on AWS can be tricky. Wouldn't it be great to pay only for the resources you actually use, and if your site could scale instantly without needing to configure auto-scaling-groups, alarms, and rules? AWS Lambda gives us these features but only supports a few languages. Until now, making PHP run on AWS Lambda has required a lot of hacks and workarounds. However, with brand new tools, a lot of the pain has been fixed for you. In this session we'll go through the steps required to set up a real Symfony 4 service running on Lambda, served over HTTPS, and without launching a single EC2 instance or ELB. Finally we'll think about how to retro-fit to older Symfony applications, and have a look at how we might benchmark application performance.

Building first-class REST APIs with Symfony
Talk by Michael Cullum in Track A

Building REST APIs is becoming an ever more common task for PHP developers to do and whilst the task may often sound simple in that it involves reading some input, and getting (or persisting) to a data source and returning some JSON, there are a lot of common pitfalls and complications that you might encounter along the way. In this talk we'll look at how we can build a simple maintainable REST API using the Symfony components that can perform some simple operations in ways that are clean and simple.

Symfony Messenger: Messages, Queues, Workers and more
Talk by Samuel ROZE in Track B

Symfony 4.1 comes with a new Component: Messenger. It drastically simplifies the use of message buses and handling asynchronous operations using message queues such as RabbitMq. In this talk, I will introduce you to this component and show you how to get started with it.

The Symfony Open-source Community
Keynote by Zan Baldwin

The Symfony project is more than just a codebase; it is a fully-fledged community around what has become a professional standard within the PHP ecosystem. We’ll explore this wonderful community and its members, the direction its leadership is taking it in, and seek out the many ways to participate beyond just making a pull request. Community participation is easier than you think, can benefit you personally and enrich your life!