Hi everyone,
And just like that, it's already December! While things start to et busy on you social calendars, we've got you covered when it comes to news and updates from the world of php. This week we have articles on mastering Symfony 7.4, Route definitions in Laravel, and the second part of refactoring legacy. In Tutorials this week we have guides for debugging Laravel queued jobs, building custom Symfony custom commands, and a beginner's guid to PHP. Finally in our Reading section we have articles on why php memory goes up in long-running workers, architecting advanced routing patterns in Symfony, anf spotting 'code that smells'.
We have all that and more, so we do hope you enjoy this week's newsletter. If you have an article, tutorial or podcast that you would like to be featured in our newsletter, feel free to reach out to us at [email protected].
All the best,
Adrian
|
Please help us by clicking to our sponsors:
|
Articles
Mastering Symfony 7.4: The Power of Attribute Improvements
The release of Symfony 7.4 in November 2025 marks a significant milestone in the framework’s history. As the latest Long-Term Support (LTS) version, it solidifies the shift towards a more expressive, attribute-driven architecture that has been evolving since PHP 8 introduced native attributes.
Refactoring Legacy: Part 2 - Tell, Don't Ask. (Server Driven UI)
It will always break. You could write flawless code. You could have 100% test coverage, multi-region failover, circuit breakers, retries, the works. Something will still break.
Use variable variables of PHP to obfuscate code
I came across a weird PHP concept—variable variables.
Sustainability of Open Engineering
Recently the question “Why don’t major corporations invest in PHP?” was raised in the Reddit PHP community.
The Difference Between ?: and ?? in PHP
In PHP, I often see the ternary operator (?:) and null coalescing operator (??) being used interchangeably, but they actually serve different purposes.
Route Definitions in Laravel
In a Laravel application, you will define your web routes in routes/web.php, closure-based Artisan commands in routes/console.php, and, if you choose to publish them, API routes in routes/api.php and event broadcasting channel registration in routes/channels.php.
|
Tutorials and Talks
Migrating Ugly ID-Based URLs to Clean Keyword URLs — a practical, safe SEO guide
If your site still serves URLs like /product.php?id=12345, you’re missing out on better UX, cleaner analytics, and small SEO gains that add up. Migrating to keyword-rich URLs (e.g., /products/red-running-shoes) is worth it — but only if you do it methodically to avoid traffic loss.
Trick for testing exceptions in PHPUnit
When you're using PHPUnit to test for an exception you can use $this->expectException(EvatrInvalidVatNumberException::class); for setting up your test to listen to the exception. If the expected exception is not thrown your test will fail and PHPUnit will report the issue.
How to set up Database Integration Tests in vanilla PHP
In this guide I’ll show you how to run fast, isolated, high-quality Database Integration Tests in legacy or framework-less PHP projects. Only Doctrine or PDO needed, and a small but incredibly powerful trick used by many battle-tested frameworks across different programming languages ecosystems.
Multitenancy in Yii2: Practical Guide and Code Examples
In this article, I'll show you how to implement a basic multitenant setup in Yii2, including code snippets and best practices.
A Beginner’s Guide to PHP — The Language That Powers the Web
If you’re starting your journey in backend development, PHP is one of the best languages to begin with. It’s simple, powerful, and used by millions of websites — including Facebook (early days), WordPress, Wikipedia, and many more.
The Ultimate Guide to Debugging Laravel Queued Jobs Like a Pro
After years of working with Laravel's queue system, I've compiled this comprehensive guide to help you master the art of debugging background jobs.
Building custom Symfony Console Commands like a pro (with Symfony 7.4)
The Console component is one of Symfony’s oldest and most widely used components. It powers everything from simple maintenance scripts to complex DevOps tools. Not only in Symfony apps, but in thousands of PHP projects around the world.
Building a simple RAG system in PHP with the Neuron AI framework in one evening
Today, we’ll look at how to build a basic RAG system in PHP (yes, really!) using the Neuron AI framework. This will be a small proof-of-concept: minimal, but fully functional.
Surviving Microsoft SSO: A Guide to Laravel 12, Sanctum, and Azure AD
Implementing Single Sign-On (SSO) can feel like navigating a minefield of obscure error codes and strict security protocols. Recently, I integrated Microsoft (Azure AD) authentication into a Laravel 12 API backend intended for an Angular frontend.
|
News and Announcements
Pause a Queue for a Given Number of Seconds in Laravel 12
The Laravel team released a patch version, v12.40.2, which can pause a queue for a given number of seconds. Building on the Laravel 12.40 release, which introduced pausing and resuming a queue indefinitely, now you can specify a number of seconds to pause the queue.
Introducing Mailviews Early Access
Everyone loves the idea of sending great emails, but actually building them is another story. You start with good intentions, then end up wrestling with layouts, fixing tiny spacing issues, and testing across a bunch of clients to make sure nothing breaks.
Symfony 7.4.0 released
Symfony 7.4.0 has just been released. Check the New in Symfony 7.4 posts on this blog to learn about the main features of this new stable release; or check the first beta release announcement to get the list of all its new features.
November 24–30, 2025: A Week of Symfony #987
This week, the stable versions of Symfony 7.4.0 and Symfony 8.0.0 were released, including tens of impressive new features. In addition, the Symfony community gathered for the SymfonyCon Amsterdam 2025 conference, which was a great success. Finally, we published the Black Friday promotions for the Symfony ecosystem.
Laravel Live Japan
Laravel Live Japan is the first official Laravel community conference in Japan. Join us in Tokyo at Tachikawa Stage Garden on May 26-27, 2026 for this premiere event. Enjoy two days of inspiring talks, hands-on learning, and unforgettable community experiences.
|
Podcasts and Vlogs
The Stack Overflow: Abstraction, but for robots
Ryan welcomes Simone Kalmakis, VP of Engineering at Viam, to dive into how her team is bridging the gap between software and robotics, the importance of abstraction layers in making robotics more accessible, and the real-world applications of robotics from lobster traps to industrial sanding robots.
Maintainable Podcast: Don MacKinnon: Why Simplicity Beats Cleverness in Software Design
Don explains why unnecessary complexity is the biggest barrier to maintainability, drawing on themes from A Philosophy of Software Design.
Software Engineering Radio: SE Radio 696: Flavia Saldanha on Data Engineering for AI
Flavia Saldanha, a consulting data engineer, joins host Kanchan Shringi to discuss the evolution of data engineering from ETL (extract, transform, load) and data lakes to modern lakehouse architectures enriched with vector databases and embeddings.
Developer Tea: You Know The Hard Thing You Need to Do Next - Here's Why It's Worth Doing Now
We often look for ways to reduce the load on our brains, seeking shortcuts and optimizations to get ahead. Sometimes this works, reinforcing the belief that we can hack our way around every problem.
Shoptalk Show: 693: Hobbies, Puzzle Game Circuit, and Web Monetization News
Why do we turkey when there's so many (better) options for meals, how many hobbies do we really need and why can't we do all of them, Clues by Sam difficulties and doing the puzzle game circuit, does Dave like D&D or does Dave like systems, the ongoing web monetization attempts, and Brecht on range group.
WP Builds: 447 – Simplifying WordPress event calendars and ticketing with Jonathan Jernigan of Pie Calendar
In this episode, Nathan Wrigley chats with Jonathan Jernigan about Pie Calendar, a simple-yet-powerful WordPress event calendar plugin. They discuss the plugin’s evolution, including major new features like Eventbrite and ICS calendar integration for easy ticketing and syncing with external calendars.
Laravel Podcast: From Tire Shop to Solutions Engineer with Devon Garbalosa
In this conversation, Devon Garbalosa shares his journey from working in a tire shop to discovering his passion for web development, highlighting a pivotal moment when he discovered Laravel. He discusses the ease of connecting to databases and implementing authentication, emphasizing how frameworks can significantly enhance development efficiency and effectiveness.
Mostly Technical: 109: AI Bro
Ian and Aaron discuss Claude vs. Gemini, *another* Laravel New idea, drama on Thanksgiving, and so much more.
Syntax: TypeScript on the GPU with TypeGPU creator Iwo Plaza
Scott and CJ sit down live at JSNation NYC with Iwo Plaza, creator of TypeGPU, to dig into how WebGPU is unlocking a new wave of graphics and compute power on the web.
The Changelog: What actually makes you senior
Matheus Lima on what makes senior developers actually senior, Tega Brain created a browser extension for avoiding AI slop, Andrew Kelley moves Zig from GitHub to Codeberg, Matias Heikkilä says there’s no free lunch for vibe coding, and your SSD data at rest might be at risk.
|
|
Why PHP Memory Only Goes Up in Long-Running Workers (and What You Can Do About It)
Have you ever looked at a PHP worker and wondered, “Why does the memory go up… and never come down?” If you’re seeing this for the first time, it feels like a memory leak. But here’s the twist: most of the time, it’s not a leak at all — it’s simply how PHP works internally.
How to Spot Code Smells (and What to Do About Them) — CodeCraft Diary
You know that feeling when you open a file and instantly regret it? That’s your nose telling you: “This code smells.”
Architecting Advanced Routing Patterns in Symfony
If you ask a junior developer what the Symfony Routing component does, they will tell you it maps a URL to a controller. They aren’t wrong, but they are only scratching the surface.
Still Printing Stack Traces? Let PHP Tell You the Story Instead
There’s a moment every PHP developer knows way too well: the app suddenly freezes like it just remembered it left the stove on, the screen blasts a stack trace long enough to qualify as a family tree, and now you’re staring at a digital autopsy trying to guess the cause of death.
How to quickly test an API with snapshot tests
After Fandom acquired Metacritic and TV Guide in 2022, the Fandom engineering team faced the task of developing and maintaining complex systems powering those websites.
|
Interesting Projects, Tools and Libraries
peterujah/php-search-controller
Php advance mysql database search to perform search operations.
digitickets/omnipay-realex
Realex driver with 3D Secure & refund support for Omnipay payment processing library.
b3nl/sw-migrations
Uses the shopware interface to enable custom database migrations.
ijvo/kdyby-strict-objects
Simple trait to make your class strict, when calling or accessing undefined member (property or method).
allansun/openapi-code-generator
Code generator for OpenAPI or Swagger specification files.
sendsms/sendsms-laravel
Use our SMS shipping solution to deliver the right information at the right time.
svb/dto-generator-bundle
Generator for data transfer objects.
xingbei437/x_laravel-sms
A mobile phone number validation solution based on laravel fork form toplan/laravel-sms.
recoil/kernel
Reusable components for implementing Recoil kernels.
dereuromark/cakephp-shim
A CakePHP plugin to shim applications between major framework versions.
|
Jobs
------
Do you have a position that you would like to fill? PHP Weekly is ideal for targeting developers and the cost is only $75/week for an advert. Please let me know if you are interested by emailing me at [email protected] |
Please help us by clicking to our sponsor:
Protect your PHP Code
Why not try SourceGuardian 16. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders. |
So, how did you like this issue?
|
|
|
|