Join us for the 20th edition of phpday! On May 18-19 2023 you can attend the in-person event in Verona (Italy) or online.

Thursday 18th May 2023

PHPStan: How the Sausage Is Made
Talk by Ondřej Mirtes (45 minutes)

Ondřej Mirtes develops PHPStan, a popular open-source static analyser, as his full-time job. In this talk he'll share all the aspects that go into the project: development, prioritization of issues and ideas, community management, making money, and marketing. Most of the takeaways from the talk apply to any project, not just the open-source ones. It will give the attendees a few ideas how they can improve their daily work too.

ChatGPT: a use case to query Elasticsearch using natural language in PHP
Talk by Enrico Zimuel (30 minutes)

In this talk we will show an experimental project to query Elasticsearch in natural language using PHP. We will show a simple approach for building a prompt for translating an answer into an Elasticsearch DSL query and execute it to return the results from Elasticsearch.

PHP 8.2 - Just upgrade and go?
Talk by Arne Blankerts (50 minutes)

Life could be so easy: Just roll out the latest PHP version on all systems, immediately benefit from the new features and otherwise get back to implementing new requirements. In reality, however, it's not that simple: Who has time to read through all the changes in PHP and check for possible side effects in their own software? But does that really have to be the case? In this talk, we'll explore what better approaches there are to prepare for an upgrade, what tools might help, and how you can almost completely avoid the stress of a version bump.

Managers under scrutiny: 5 ways to kill your team´s productivity unintentionally
Talk by Sabine Wojcieszak (50 minutes)

Productivity is one of the magic words in today´s business. Hence being more productive does neither mean working more nor harder; it is about working smarter! Therefore, we need to use our limited time and energy for the right things to do. Most people will call it time management, but it is more about self-management. But what if team members try their best to manage themselves to increase productivity, and then a manager wastes their time - with good intentions but a worse outcome? This talk will show five real-life examples from the “manager´s wilderness” and their impact on the team. Together we will discover that such managerial behavior is not a trivial offense but has lasting effects on the team, productivity, quality, culture, and the manager him-/herself. We will also take a closer look at the reasons for this behavior. And, of course, ideas on how managers and teams can avoid these pitfalls will be presented. We will also learn how managers can become enablers for better team self-management and promoters of self-care. This new behavior can be the game changer and help managers create the proper framework for greater productivity - without overburdening the team members and themselves. This presentation deals with a well-known but homemade issue. We all have a big problem: too much work for too little time! This overload leads to too much cognitive load, leading to demotivation, illness, poor quality, and psychological problems. Each of these outcomes is bad for both: people and companies. With the most respectful interpretation, I assume that no manager/leader wants to harm their teams. But even with good intentions, managers sometimes behave in ways that waste members' time - time that none of us have. And this is a widespread phenomenon. And even if managers don't fall into this trap, they should become promoters and coaches of self and time management - which at the very least, means setting a good example for the team.

14:40 Schrödinger's SQL - The SQL inside the ORM/Builder box
Talk by Claudio (50 minutes)

Why should someone care about SQL, when a developer can abstract it into code? What about an ORMs? What impacts are there for a project? The database is out of sight, the database is out of mind, but this is where problems can start. This talk is about the importance of the database in a project and that SQL abstractions can add up to problems for your project. Know your database and the tools accessing it.

Minimum Viable PHPipeline
Talk by James Titcumb (50 minutes)

The honeymoon period is over, and your company or customer is demanding stability in your PHP applications. I'm going to talk about some essential strategies to set up Continuous Integration and Delivery pipelines to help maintain, and - over time - improve the quality of the software your team delivers. You'll learn about some of the tools necessary to set these pipelines up, basic design of CI pipelines, and some key strategies for automating deployments. I'll show you how having a solid CI/CD pipeline means that you can still deliver software fast, but with confidence that your deliverables are steadily getting better.

Stories from a career dropout
Talk by Femke Buijs (30 minutes)

Your career can feel like it is taking all the energy you have inside of you. You’re dreading the next working day, and you keep wondering if this is what you are going to do for the rest of your life. But what if it isn't? What if you find a job that makes you feel like you are on top of the world, all while being productive as well? During my talk I will share the lessons I have learned after changing my career, what the points are you need to take into consideration when making such a decision, and how this actually resembles climbing a mountain very well.

Learn to appreciate legacy
Talk by Ivo Lukač (30 minutes)

There is a lot of frustration among developers when they need to work with the old code, usually called “legacy”. But there is way more legacy code running than non-legacy out there in the world. Developers like starting from scratch but that is not often the case. If they want to successfully replace legacy with newer code they need to start with appreciation and respect for that legacy code because it somehow runs and there is no guarantee that new code will do a better job.

Friday 19th May 2023

Step into debugging
Talk by Gary Hockin (50 minutes)

While var_dump driven development is great when you're starting, at some point every developer wants more. Step debugging is the answer. In this session we'll cover the fundamentals of installing and configuring Xdebug, configuring PhpStorm to listen to Xdebug, and then actually step debugging some scripts to find our problems. Step debugging PHP is an incredibly easy and powerful tool when you know how!

10:20 Theory of programming: packaging principles
Talk by Alexander Makarov (30 minutes)

Everyone knows SOLID programming principles, the essence of modern object-oriented programming. But there are additional higher-level principles coined by Robert C. Martin that help to determine and measure isolation boundaries between packages, modules, microservices etc. In this talk you’ll get into principles of package cohesion and coupling. We’ll highlight the shortcomings, tradeoffs and key points of usage and dive into D-metrics. After the talk you’ll add more tools that help you write better code and design better systems overall.

PHPUnit 10
Talk by Sebastian Bergmann (50 minutes)

Version 10 is probably the biggest update so far for PHPUnit. Almost all internals of PHP's most widely used testing framework and test runner have undergone long overdue changes to improve the developer experience of those who work on PHPUnit. This presentation, however, focuses on the improvements that were made for those that write and run tests with PHPUnit every day. Join Sebastian Bergmann, creator, and maintainer of PHPUnit, to learn everything you need to know about PHPUnit 10. You will experience new features, big and small, in action and see how they can support you to effectively and efficiently test your software.

12:10 From domain to code: a practical approach
Talk by Davide Borsatto (50 minutes)

Domain-driven design is not about how you code, but rather about how you communicate with other people and how you think about your domain. At a certain point, though, you'll be faced with the task of converting your nicely-mapped domain into an actual application: how do I do this? Where does that go? How do I keep these concerns separated? How do I implement a hexagonal architecture? Or CQRS? There is a huge number of small decisions you have to make, and their burden can soon become overwhelming. We'll face some of these issues together, make pragmatic choices, and in the end we should be confident in moving our focus back to what truly matters: the domain.

Monitoring a PHP application with OpenTelemetry
Talk by Enrico Zimuel (50 minutes)

Is your application observable? This is a question that starts to be relevant as the complexity of an application grows. To be able to monitor and observe what's going on at run-time is a crucial aspect for debugging issues and improving performance. In this talk we will present how to monitor a PHP application using OpenTelemetry. OpenTelemetry is an open source project incubated by Cloud Native Computing Foundation that allows developers to use a common standard to observe and collect metrics from any running applications. It provides a set of tools, APIs, and SDKs for many languages. In this talk we will present OpenTelemetry for PHP showing how to use the automatic and manual instrumentation tools for monitoring any application at runtime.

PHP's type system dissected
Talk by George Peter Banyard (50 minutes)

PHP has added more and more types in the last couple of versions. But what is the meaning of a type, a type system, and a subtyping relation? In this talk, we will explain those words, and see what comprises the PHP type system, how it checks for types, how it uses and implements Liskov's Subtitution Principle (LSP) for it's subtyping relation, and how the strict_type declare affects PHP's type system.

An Elderly Software Developer’s Long Journey through Technology
Talk by Mark Baker (45 minutes)

Forty years in Software development is a long time; thirty-five years writing open source software is a long time; nearly thirty years writing software for the WorldWideWeb is a long time. You don't write software for that long without making mistakes, and without learning a few lessons along the way. So follow me on a high-speed summary of his life in software and open source development; some of the advances in technology that have occurred in that period; and some of the lessons that I've learned in that time.