PHP version stats (June 2025 edition)
Brent is back with another update on the usage of PHP versions.
Read more [stitcher.io]
Brent is back with another update on the usage of PHP versions.
Read more [stitcher.io]
In this post, I'll share how I'm using PHPStan's type aliases feature to make validation rule typehints more readable and maintainable in our Laravel application.
Read more [ohdear.app]
Join 9,500+ smart developers
Get my monthly newsletter with what I learn from running Spatie, building Oh Dear, and maintaining 300+ open source packages. Practical takes on Laravel, PHP, and AI that you can actually use.
No spam. Unsubscribe anytime. You can also follow me on X.
"Freek’s newsletter is one of the best ways to stay updated with the Laravel and PHP ecosystem. It consistently highlights useful packages, tools, and ideas from the community, especially the amazing work coming from Spatie. As a Laravel developer building SaaS and web platforms, I find it extremely helpful to discover practical tools and insights that improve my development workflow."
– youtu.be - submitted by Bert De Swaef
In this episode of the Quick Win Wednesday series, we're taking a look at the cases function on Enums.
Read more [youtu.be]
A nice video from Povilas on our newest pacakage
Read more [www.youtube.com]
Brent is doing some interesting stuff here.
Read more [tempestphp.com]
With PHP 8.4’s release, we have a new Dom\HTMLDocument class that makes working with HTML documents easier and more standards-compliant, while fixing some long-standing bugs in the old DOMDocument class.
Read more [liamhammett.com]
Povilas from Laravel Daily made a cool video about our packages.
Read more [www.youtube.com]
Our new package gives you everything you need to build a secure one-time password auth flow.
Read more [spatie.be]
Something that you’ll need to often is casting the collection back to a regular array. Like me, you might be tempted to use toArray() for this. But that might be the wrong method to call.
Read more [spatie.be]
Tests performed by Tideways show that, in general, the performance between 8.2, 8.3 and 8.4 does not move much for a Laravel, Symfony and WordPress demo application.
Read more [tideways.com]
– blog.genijaho.dev - submitted by Geni Jaho
Stubs are fake implementations of interfaces or classes that simulate the behavior of real services.
Read more [blog.genijaho.dev]
I’m proud to announce that we’ve released a new package called spatie/laravel-passkeys that makes adding passkeys to a Laravel app as easy as it can be.
Read more [spatie.be]
Here's a fun little sideproject from my colleague Seb. This web app is built with Laravel, Alpine.js, and Tailwind CSS. Content is stored in Markdown files and loaded with our sheets package.
Read more [php-operators.com]
– muhammedsari.me - submitted by Muhammed Sari
Group by type or context / process? One of these methods will crush your project's growth. Find out which!
Read more [muhammedsari.me]
– muhammedsari.me - submitted by Muhammed Sari
Everyone knows the classic decorator pattern—but have you met its duck-typed cousin? Discover how to extend Laravel behavior without interfaces, the clever way.
Read more [muhammedsari.me]
– liamhammett.com - submitted by Liam Hammett
Find out how we can champion PHP as a community and help bring it to the attention of more developers
Read more [liamhammett.com]
– liamduckett.com - submitted by Liam
A short post about my preferences around type safety and static analysis.
Read more [liamduckett.com]
– bert.gent - submitted by Bert De Swaef
If you’ve been working with Laravel for a little while, you’ve probably come across observers and event listeners. But what is the difference?
Read more [bert.gent]
Laravel’s new fillAndInsert() method enables bulk insertions while applying model casting, timestamps, and UUID generation.
Read more [www.harrisrafto.eu]
A couple of years ago, Laravel introduced a great feature which allows to run PHPUnit / Pest tests in parallel. This results in a big boost in performance.
By default, it determines the concurrency level by taking a look at the number of CPU cores your machine has. So, if you're using a modern Mac that has 10 CPU cores, it will run 10 tests at the same time, greatly cutting down on the time your testsuite needs to run completely.
A default runner on GitHub doesn't have that many cores, so you can't leverage parallel testing as good as in your typical local environments.
In this blog post, I'd like to show you a way of running your tests on GitHub, by splitting them up in small chunks that can run concurrently.
We use this technique at Oh Dear to cut down the running time of our vast testsuite from 16 minutes to only just 4. In this blog post all examples will come from the Oh Dear code base.