February 26-28, 2020
Montreal, Canada

Montreal PHP Conference

PHP Caching personalized data is hard. Most systems just avoid caching stateful data altogether and use AJAX or ESI to get the job done.

In this presentation Thijs will present a developer-friendly way to cache templates in Varnish and parse the stateful data "on the edge" by directly accessing the application's Redis session store in Varnish.

This can be leveraged with a simple template filter in both Twig for Symfony and Blade for Laravel.
PHP Most of us are probably aware of code smells, but there are other coding horrors that should trigger alarm bells whenever we see them. Like a good horror movie, coding horrors should scare us when we find them, because they're often symptomatic of deeper problems. So let's take a short tour of some of the greatest horror movies ever made (and a few turkeys); and some of the most worrying code horrors that I've seen.
PHP We talk a lot about various architectural approaches. Unfortunately, we don't talk as much about the environment in which we apply those techniques - the framework. In this talk I'd like to show you how you can apply virtually any kind of approach - DDD, CQRS, Event Sourcing, Hexagonal Architecture, and many more, virtually everywhere. There are no silver bullets, but with the right approach, we can get pretty close to that goal.
PHP Separated layers are one of the fundamental principles of software design. Your framework is just the topmost layer, and your business code should not depend on it. While we will touch a few package design basics, the focus is on how to actually DO it, while still avoiding overengineering and clutter. We’ll also take a look at Deptrac, a tool to visualize layer dependencies during development.
PHP How can we go from a legacy app based on Zend Framework 1 (or no framework at all) to its "modern" equivalent using Symfony 4 without attempting the big rewrite?
Step by step, sprint by sprint, we can migrate each feature and progressively transfer responsibilities while improving the quality and maintainability of the application. In this talk, we'll see how to attack this potentially humongous project and how Symfony can help you on this path.
PHP Want to find out which pieces of your site break down under load first? Load testing answers this question, and these days you can simulate full user behavior in a load test, versus merely hammering a single endpoint.

In this talk, we'll go through a number of conceptual points that you won't want to miss in order for your load tests to perform their intended purpose. Then we'll jump into implementation details, using the K6 load test tool.
PHP Of course you test your code... you may even use test driven development.
But are your tests actually testing your code ? Or are they just there to satisfy the CI process ?

In this talk Juliette will focus on the tips and tricks she learned over the years.

Learn how to improve your test setup, what assertions to use when, why data providers are incredibly useful and how to make your tests more descriptive and easier to debug.
PHP PHP loves arrays. They're the uber data structure. That's the problem.

In modern PHP there are almost always better options than bare arrays that are easier to use, safer, less bug-prone, and faster. Yes, all of those.

This talk will go through what PHP arrays actually are (hint: they are not arrays at all), why they're problematic, and what to do instead.
PHP Yes, it’s possible to use asynchronous programming in PHP and it can massively improve applications velocity. But if it was so simple everybody would already use it. Our team started to use this paradigm one year ago, it was a success in many ways but we faced a lot of questions: which applications are suited for this? How to train your team? Which tools are available? Here our feedback, from daily developments to production.
PHP Am I making a mistake? Is this the right decision in the long term? Join me as I show PHP code of over 10 years. I'll explain what worked well, what didn't and why. You can then make informed decisions for the robustness and maintainability of your application. On the menu: SOLID principles, testability, dependecy injection, exception handling, use of null and false, ORMs, etc.
PHP Le "build" d'une application PHP peut être bien plus qu'une suite de tests quotidienne : chaque merge request peut être analysée et décortiquée ou déployée automatiquement sur un environnement éphémère. Un push dans master pourrait déclencher un déploiement sur staging ou même production.
Avec quelques lignes dans un .gitlab-ci.yml, apprenez à automatiser ce qui peut l'être tout en évitant les petits pièges qui gâchent de grosses journées.
PHP At re:invent 2018, Amazon released custom runtime support and Layers for their Lambda runtime. With this release we as developers can create our own PHP Lambda runtime without undue overhead. This talk will show you how Lambda custom runtimes work, how to build one that speaks PHP, and how to use pre-built custom runtime layers for both job-processing and, via API Gateway, serving web traffic.
PHP PSR-14 is the new PHP-FIG specification addressing event dispatching. Many frameworks have an "Event system" of some kind, but all are incompatible... until now.

PSR-14 lets you interleave these systems together, letting you easily swap libraries into the framework of your choice.

We'll cover how PSR-14 works, examples of how to use it effectively, and how to adopt it alongside, and even encompassing, your existing one-off tooling.
PHP The tree is one of the most important data structures available in Computer Science. If you know how to describe a problem using trees, you can significantly improve the speed and quality of the developed solution. In this talk, I'd like to show what kind of problems can be solved with trees and show examples of how I did that in several non-trivial situations.
PHP There are some exciting new things in Symfony 5. Besides removing some deprecations and bumping the PHP verison requirements, several components have left the experimetal stage. the Mailer & Mime, HttpClient (and why do we need one?), Notifier, String handling, and more.

In this talk, we'll look at the new features in depth both from the high level perspective of using them in Symfony full stack, and use the standalone.
PHP With PHP 7.4 recently released and PHP 5.3 and 5.4 still accounting for over 35% of all production environments, it's time to paint a clear picture on not just why everyone should move to 7.x, but on how to get code ready for the latest version of PHP. In this talk, we'll look at some handy tools and techniques to ease the migration.
PHP Does your application rely on autoloading? Chances are, it does – given autoloading was introduced to PHP back in Version 5. While the original global function has long been deprecated, with PHP 7.4 the whole concept of autoloading became superfluous! This talk will introduce you to preloading and how it is likely to change pretty much everything: how to load classes and when, and how to deploy new versions to production!
PHP PHP has its own treasure chest of classic mistakes that surprises even the most seasoned expert : code that dies just by changing its namespace, strpos() that fails to find strings or arrays that changes without touching them. Do that get on your nerves too ? Let’s make a list of them, so we can always teach them to the new guys, spot them during code reviews and kick them out of our code once and for all. Come on, you’re not frightening us !
PHP Generators are often described as a simplification of iterators pattern, but they are also very powerful to perform asynchronous treatments. We will dive into event loops and promises to understand why and how generators can help us to write maintainable asynchronous functions, especially in Php. We will conclude with some concrete use cases from our experience at M6 (French media group).

Explore all 156 sessions

Montreal 2020 sponsored by