phpday is the yearly gathering for the European PHP community, since 2003.
09:45 |
Community, PHP and us: Growing up
Keynote by Michelle Sanver (45 minutes) In year 2000 when PHP 4 just came out, we had functions.php and when it started being big we made functions2.php. When object orientation came out we renamed our databasefunctions.php and put a class around it and called it OOP. PHP by then, was not very mature. I by then, was not very mature. The community by then, was not very mature. We have come a long way since then! We now believe 12 year old girls on the internet are not FBI agents. We now have type hints, and namespaces, and composer! We have all matured. Let me share my story of amazing technology that changed my life. I will also share some horrible community experiences, and the awesome ones that kept me going. Let’s keep growing, because we never really stop. |
10:30 |
Crafting Elegant APIs with Laravel
Talk by Johannes Pichler (30 minutes) Well designed and performant API's are key aspects of good and reliable application systems. Especially when kicking of an API system it is really hard to setup and define all boundaries that are necessary to build a futureproof API. Changes later on can be time consuming and of course expensive. Therefore it is extremely important to plan the API design beforehand and to use best practices and patterns from the industry. In this session I will guide the listeners through the creation process of an API with Laravel and will introduce and explain all important parts that constitute a battle tested and robust API. Things like middleware layers, security tokens are only some key points that will be presented on stage. |
11:30 |
What's new in PHP 8.3
Talk by Derick Rethans (50 minutes) During this presentation, we are going to look at the new features that were introduced in PHP 8.3, and some in earlier versions. Join me to have a look at how the type system is strengthened with Typed Class Constants, Readonly Classes, Arbitrary Static Variable Initialisers, Overloaded Method Markers, and other new smaller features and clean-ups. At the end you will have a good understanding about all the new and exciting features that are part of the PHP 8.3 release. |
12:20 |
Shrek, Onions and Architecture
Talk by Katy Ereira (50 minutes) Have you ever encountered a codebase that's ogreish and has so many layers of complexity that it makes you cry? It might actually be an onion! In this humorous talk we'll investigate the structure of large monolithic applications and how we can peel back layers to reveal greater understanding. Using the principles of hexagonal architecture and the science of onion growth, we can make monoliths great again. |
14:40 |
WP-CLI for PHP developers
Talk by Milana Cap (50 minutes) When was the last time you tested code in production? Your own website doesn’t count. Conversations with the Terminal, or WP-CLI for PHP developers, is the sequel of WordPress through the Terminal talk, focusing on a set of commands and tools useful for PHP developers. This is not just a live demo of WP-CLI commands. This is zooming out and seeing WP-CLI in collaboration with other tools in the context of PHP developer needs and everyday tasks. We’ll probably release the Kraken as well. |
15:30 |
Building Fast APIs and Middlewares: Mezzio + Swoole
Talk by Babarinde Odewumi (50 minutes) We'll be discussing Mezzio: A PSR-15 Middleware framework, allowing you to build elegant middlewares for your applications and also Swoole: a PHP extension that allows you to build high performance applications. In this session, we'll discuss some concepts of middlewares/handlers, the http server, coroutines, tasks. We'll also look at how to combine both Mezzio and Swoole to get the best of both worlds and highlight how this differs from the traditional Apache/Nginx PHP approaches and pitfalls to be aware of when taking the dive. |
16:50 |
What is the secure software supply chain and the current state of the PHP ecosystem
Talk by Paolo Mainardi (30 minutes) In this talk I’ll explain what is the Software Supply Chain, common threats and mitigations and how they apply to IAC ecosystem too. I’ll show off security threats using Terraform and its ecosystem and finally i’ll talk about OCI images talking about digital signatures and SBOM using Sigstore and Syft. I’ll do a live coding session showing off how to deploy secure OCI images on K8S cluster with security policies built with Kyverno, the session includes also security scanning using the generated SBOM. |
17:20 |
Watch the clock
Talk by Andreas Heigl (30 minutes) Creating current time information in code is rather easy by calling time() or new DateTimeImmutable() directly when the information is necessary. But that then makes the code a nightmare to test. In this session we will see how the new PSR-20 allows us to change that by still making it easy to generate current time information but also allowing one to test the code. And we will get some background info why it was designed in such a way. |
09:35 |
Decision-making for developers
Keynote by Rick Kuipers (45 minutes) What do cars, chess and Peter Griffin have to do with decision-making? Decision-making is a complex process, we go through it multiple times per day. Everything from micro-decisions like deciding how to write a certain function, up to macro-decisions like deciding what framework to use. As a developer I'm always looking for ways to improve myself, and as a lead I'm always looking for ways to cultivate an effective and autonomous team. One particular skill that is often overlooked is decision-making. In this talk I would like to zoom in on this process. I will be explaining some of the psychology that goes into decision-making, give you some decision-making techniques, explain how a decision-making framework can help your team and why documenting your decisions is essential. |
10:20 |
Automate all the things with CI/CD in GitHub Actions
Talk by Rob Allen (30 minutes) We have many tools to help us build an application consistently with high quality from code formatting, through static analysis and testing. We can run them locally, but that's too easy to forget, so they really come into their own when we run them automatically within GitHub, and that's what we'll cover in this talk. I'll show you how to set up workflows in GitHub actions to check for all the common and not-so-common items that will make it easier to accept changes into the project and then follow on from there to show how we can also create releases and deploy automatically too. By the end of this session you'll be able to create your own workflows that will automate the your tooling. |
11:20 |
How to contribute to PHP?
Talk by Gina Banyard (50 minutes) You have always wanted to contribute to PHP's source code, but have no idea how to go about it? We will have a look at the resources available for understanding and writing the C code of an extension, followed by a live coding session where we will add a new PHP function and its unit tests. |
12:10 |
Generative AI and Large Language Model (LLM) in PHP
Talk by Enrico Zimuel (50 minutes) In this talk, I'll give a quick introduction to LLM and how to use in a PHP application. I'll show some examples using the LLPhant project including a retrieval-augmented generation (RAG) system using OpenAI and Elasticsearch as vector database. I'll also present some open source LLM like GPT4All. |
14:30 |
Symfony Messenger: the sharpest tool in your PHP toolbox
Talk by Alessandro Lai (50 minutes) The PHP ecosystem is very rich and mature, and offers you a lot of stable and widely used tools, frameworks and libraries. Symfony evolved long ago from a monolithic framework into a collection of very useful and reliable components, but one component in particular (in my opinion) really stands out: Symfony Messenger. In a single package, you have an easy way to dispatch messages and tasks to sync and async handling, with enough abstraction to support a variety of transports natively, and a long list of useful patterns already implemented and ready to be used out of the box. In this talk, I'll recount how Symfony Messenger successfully replaced a lot of the code that I had to write by hand in the past multiple times, how I successfully used it in different situations, all the features and tricks that you can leverage with it, why it's important to use them and which pitfalls you may encounter using this tool. |
15:20 |
Upgrading Legacy to the Latest PHP Version
Talk by Anna Filina (50 minutes) Your application runs on an old PHP version that is about to go out of support. How to upgrade without breaking the application? You will need the right tools for detecting and fixing those issues, as well as a way to verify that the application is still working correctly. In this presentation, I will share the strategy that I employed when upgrading millions of lines of untested code. |
16:40 |
Twenty lessons from twenty years of PHP
Talk by Sarah Savage (45 minutes) As any experienced developer will tell you, there’s a world of difference between experience and book knowledge. Come learn from the hard-won lessons of twenty years of developing PHP applications, including what it means to be senior, how to achieve perfect code, and what the best PHP framework really is. |