phpday 2022 is the 19th edition of the Italian PHP conference, organized by GrUSP, happening in beautiful Verona (Italy).

Thursday 19th May 2022

Lessons Learned Live Coding in Public
Keynote by Gary Hockin (55 minutes)

Part of my job as a Developer Evangelist means I spend a lot of time live coding publicly. Mainly this is on the live-streaming platform Twitch, but also at conferences, customer training, and demos. Because my job doesn't involve all coding all the time, a lot of the things I end up coding are either incredibly complex, incredibly simple, or even throw-away. I've done so much live coding in public that it's skewed my programming reality to a wondrous degree. Join me in this session as I relay habits I've learned to help myself with my project-hopping ways, tools I turn to again and again, and just how many times I've managed to reveal a live API key to a live-coding audience.

Your Tests Won't Save You
Talk by Chris Hartjes (40 minutes)

Having a good suite of automated tests simply isn't enough to ensure your application continues to behave as expected and that your code base continues to be maintainable. In this talk Chris draws on his real-world experiences to discuss tools he believes should be used alongside your tests. You'll be introduced to code linters, static analysis tools, and build servers by someone who used to have to do this work both ways, uphill, and in the snow.

11:25 The Right API for the Job
Talk by Rob Allen (55 minutes)

When you've been tasked with creating an HTTP API, there's many things that you need to consider and I'm here to help you navigate your journey. We start with the fundamental decision of architecture: should your API be RESTful? What about GraphQL? or RPC? We'll look at the choices and their strengths and weaknesses to guide your decision. We'll also take a hard look at the other, vital components of an API from how it works with HTTP, through validation, payload formats and error handling. An API makes its mark when it is used, so we'll also consider developer experience to ensure that your API is best it can be. By the end of this talk, you'll be well-placed to design and deliver a great API that's fit for purpose.

12:20 Docs or it didn't happen
Talk by Milana Cap (40 minutes)

Your code can be all rainbows and unicorns, cutting and shining, but if there’s no documentation, does it even exist? Documentation can make or break your open source project. Don’t believe me? Let me tell you a story or three about writing and managing documentation for the largest open source CMS community. The WordPress documentation.

Fantastic functions and where to find them
Talk by Freek Van Der Herten (55 minutes)

PHP is a truly amazing language. You probably use PHP to create beautiful websites and services in an expressive way. But the language is capable of so much more than what you'll probably program in your day to day job. In this entertaining talk, we'll take a look a couple of surprising ways to use PHP. You'll see lesser known functionality being used such as weak maps and process control functions. We'll also cover a couple amazing open source PHP projects that have borrowed inspiration from communities outside of PHP such as Tailwind and Phoenix. After this talk you'll be even more convinced how truly flexible PHP. You'll also have learned a couple of functions and packages that you can use in your next project.

Tuning PHPStan to Maximum Strictness
Talk by Ondřej Mirtes (55 minutes)

Besides the traditional rule levels 0 through 9 ( which allow developers to adopt PHPStan incrementally while increasing the strictness gradually, the static analyser offers plenty of other configuration options to look at the code with a critical eye. In this talk I'll show you these options with examples of practical impact on your code. It will become more predictable and readable.

How I sliced your app
Talk by Marco Pivetta (55 minutes)

It's that time of the year again: you've been putting it off for a long time, but your PHP project is starting to become a mess, and you don't have a plan on how to bring some order in the chaos. Complexity is always lurking around, threatening your productivity, and we constantly need to fight it. Luckily, it is very much possible to organize your code in such a way that it is easier to maintain long-term, you just need a good plan! In this talk, we will focus on how to take greenfield and brownfield projects, and practical approaches taken by the speaker to keep them under control. We will apply tools and structural/architectural patterns that worked in the field, and which may be useful next time you start to feel like everything is starting to become too confused.

17:45 Living the Best Life on a Legacy Project
Talk by James Titcumb (40 minutes)

You've started a new job. As you dig deeper into the codebase, the WTFs per minute rate rapidly increases, and you're left wondering... "Where do I start?!". In this talk, I'll draw on my own experiences of joining several different teams to help maintain their legacy codebase. You'll come out of this talk with a better understanding of when you should or should not refactor existing code, the importance of communication, documentation, testing, and ideas for automated tests and checks.

Friday 20th May 2022

Never stop learning, or how curiosity and cross pollination drives innovation
Talk by Pauline Vos (55 minutes)

Software developers all know: continual learning is part of the job. And that's what so many of us love about it. Innovation is constant, and it's an exciting challenge to keep up with so many new technologies. But where do all these new concepts, frameworks, and patterns come from? Let's take a journey through the history of innovation to explore how different worlds collided to inspire new, radical ideas. Let's discover how cross-pollination has helped our community grow into what it is now, and can help us think of new ways to solve complex problems. Join us for a session of inspirational stories that illustrate how cross-pollination has helped form some of history's most profound innovations, and will hopefully inspire you to conjure up your own radical new ideas.

Web API and client generation using OpenAPI specification
Talk by Enrico Zimuel (40 minutes)

In this talk we'll show how to use OpenAPI specification to generate a PHP client. We will present a use case of the project that we did to build the PHP client for Elasticsearch and Enterprise Search, generating more than 400 endpoints.

Introducing PEST — a delightful PHP Testing Framework
Talk by Nuno Maduro (55 minutes)

Testing can be more intuitive, user-friendly, and productive than you think! This talk introduces you to Pest - a delightful PHP Testing Framework with a focus on simplicity. It was carefully crafted to bring the joy of testing to PHP. Check out the website: Get ready for a live-coding session, where I unveil all the goodies of this new open-source testing framework. After this talk, you’ll be able to use Pest in your everyday PHP.

How to build a test suite from scratch
Talk by Armando Caprio, Tobia Zanarella (40 minutes)

Building of a test environment for PhpUnit based on a PHP non-test-native application built on Phalcon framework. Identification of the useful and necessary components for the creation of a complete environment for writing test cases and their execution. CI/CD structuring with GitLab and GitLab Runner.

14:30 PHP + ES + CQRS + DDD = ? An integrated strategy
Talk by Alessandro Lai (55 minutes)

DDD, CQRS, Event Sourcing have generated a lot of buzz in recent years, but they seem an unattainable target for the everyday, long running projects we work on. The required amount of knowledge seems unbearable, halting the delivery of business value is not an option, and sticking with the "known ways" of development seems like a safer bet. In reality, all those approaches have so much in common underneath that applying all of them together makes them collimate toward cleaner and suppler code, with a compound effect on the benefits and a reduced overall cost of implementation. In this talk, we will see the action plan that my team designed at the start of this year to try and implement all of this inside an already-running project, going from the most useful tools to keep the implementation in check, to the use of the EventSauce library, starting from a small fraction of the project. From there, we will see that thee attack plan that will lead us, with multiple short iterations, over the process of taking over the "old" code and transforming it into a fully event-sourced DDD application, while still delivering new features.

15:25 PSR-18: Abstracting HTTP clients in PHP
Talk by David Buchmann (55 minutes)

PSR-18 defines how to send PSR-7 requests without binding your code to a specific client implementation. Major HTTP clients like Guzzle and the Symfony HTTP client support PSR-18. This is particularly interesting for reusable libraries that need to send HTTP requests but don't care about specific client implementations.

PHP's Kitchen Nightmares
Talk by Stefan Koopmanschap (55 minutes)

Remember the Kitchen Nightmares TV show? Chef Ramsay visiting restaurants that are struggling, and telling them how to improve, but in the process you see all the bad things happening? Let's head into our development kitchen and look at things that can go wrong, and figure out how to improve.