Ondřej Mirtes
Creating @phpstan@phpc.social by day and night. 👨🏻💻👨👩👦👦🎮🚴♂️
PHPStan 2.2: Unsealed Array Shapes, Safer Array Keys, and More! https://phpstan.org/blog/phpstan-2-2-unsealed-array-shapes-safer-array-keys
I’m trying to wrap my head around the fact that 10-15 years ago Linux was the OS with the worst UX, now it’s the one with the best UX.
Because it’s made by volunteers who only care about the result and their users, but Microsoft and Apple mostly care only about themselves.
Goodbye PHPStan 2.1.x 👋 It's been nice 18 months. https://github.com/phpstan/phpstan/releases/tag/2.1.56
Now onto PHPStan 2.2.0. It's coming on Thursday.
Why Array String Keys Are Not Type-Safe in PHP And What Will PHPStan Do About It:
https://phpstan.org/blog/why-array-string-keys-are-not-type-safe
For the longest time I was bothered that “Documentation” link on phpstan.org led directly to “Getting Started” page, and that some really useful docs pages weren’t discoverable at all.
That changes today. Documentation now has a dashboard with boxes describing what use-case/problem the linked page solves.
Using PHPStan to Extract Data About Your Codebase https://phpstan.org/blog/using-phpstan-to-extract-data-about-your-codebase
Error identifiers documentation is finally useful! Take a while and browse everything PHPStan can report: https://phpstan.org/error-identifiers
I had a bad hair day at PHP UK but I think this talk recording is still worth your time.
Can’t wait to delete all that object-oriented pesky typesystem code from PHPStan!
I love git bisect and I wanted PHPStan to have its own bisect command. So I made it.
If PHPStan reports a bug in your code but you know it's wrong and that it used to work before you upgraded, you can use bisect to pinpoint the exact commit where the behaviour changed. Available now in 2.1.47!
My opinion on the latest Bound-Erased Generic Types RFC: https://externals.io/message/130816#130853 (spoiler alert: I like it)
Several times a week I tell people their problem can be solved by adding @phpstan-impure above their non-void function (or by setting rememberPossiblyImpureFunctionValues: false).
Finally, PHPStan will tell them by itself:
Come see me at 13:30 in Pathé 1 play Red Alert 2…. uhh, talk about generics in PHP. #dpc26 @dpcon@bird.makeup
Something I didn’t have on my bingo card for 2026: a new major version of the only frontend framework I ever learnt and used: Knockout.JS https://tko.io/3to4/
Yo dawg, I heard you like comments, so I put comments in your comments, so you can comment while you comment.
Now available in phpstan/phpdoc parser 2.1.0 & PHPStan 2.1.6.
WebExpo Prague is happening again in two weeks, and I wouldn't miss it. It's one of the best places to meet software people from across the scene in one place.
Use MIRTES26 for 1 000 Kč off at webexpo.net. See you there!
I’m gonna prompt inject the agents myself 😈