HomeArticles

Plain PHP is underrated in 2026: what vanilla PHP still does better than frameworks

The framework reflex

I've been writing PHP for over a decade. For the last few years, every project I started began with the same ritual: install Laravel or Symfony, set up the structure, then spend an afternoon configuring things I didn't really need. I did it because everyone else did. It felt professional.

Then last year I built a small internal tool for my team – a dashboard that pulls data from three APIs and displays it in a few charts. Nothing fancy. I started with Laravel, but after the initial setup, I realized I was spending more time on the framework than on the actual logic. I deleted it and rewrote it in plain PHP. The whole thing took me two days. The codebase was 400 lines, no dependencies, no hidden magic.

That experience changed how I think about frameworks. I'm not saying they're useless – they're great for large teams and complex domains – but I've come to believe that plain PHP is severely underrated in 2026. Here's why.

Speed is not just a buzzword

When someone says "fast", they usually mean milliseconds. But with plain PHP, you get two kinds of speed: runtime speed and development speed.

Runtime: A plain PHP script that includes a couple of files and echoes some JSON runs in 5-10ms. The same request handled by a framework often takes 50-100ms because of all the middleware, service providers, and bootstrapping. That's 10x slower for nothing. If you're serving 100,000 requests a day, that difference adds up on your server bill.

Development: Frameworks force you to think in their abstractions. You have to learn the routing system, the ORM, the validation rules, the dependency injection container. With plain PHP, you just write a function and call it. For simple CRUD apps, I can ship features in hours, not days.

Zero magic

One of the biggest frustrations with frameworks is the magic. You call a method and somehow a database connection appears. You define a route and a controller is instantiated. If something breaks, you have to debug a stack trace that goes through dozens of framework files.

Plain PHP is transparent. If I have a bug, I open the file, look at the code, and see exactly what's happening. No hidden service providers, no implicit auto-wiring. This might sound less sophisticated, but it's incredibly liberating. When I'm debugging at 2am, I don't want to trace through a labyrinth of abstractions. I want to see a foreach loop and a SQL query.

Only what you need

Frameworks come with a lot of baggage. That default Laravel installation has 50+ packages, an ORM, a queue system, a scheduler, authentication, and more. Most of it you'll never use. But it's there, taking up space, slowing down deployment, and adding potential security holes.

With plain PHP, I include exactly what I need. If I need a database, I use PDO. If I need routing, I write a small router (20 lines of code). If I need templating, I use plain PHP with htmlspecialchars. This means my entire app is often less than a megabyte, deployable with a simple git pull.

I'm not saying you should write everything from scratch. If you need a robust ORM, use Doctrine. If you need a battle-tested router, use the Symfony Routing component. The point is to choose individual tools, not an entire framework that forces you to adopt its whole philosophy.

Long-term maintenance

Frameworks evolve. Laravel 11 is different from Laravel 5. Upgrading can be a nightmare. I've seen projects stuck on old framework versions because the upgrade path was too risky. Plain PHP, on the other hand, is stable. The core language changes slowly, and most of my plain PHP code from 10 years ago still runs today with minimal tweaks.

I have a legacy system at work that's been running for 8 years. It's plain PHP with a few helper functions. I just open it, change a query, and commit. No upgrade path, no breaking changes. That's a huge advantage for small businesses that don't have the time to keep up with framework releases.

When to stick with a framework

I'm not a purist. There are cases where a framework is the right choice. If you're building a large application with a team of developers, a framework imposes structure and best practices. It also provides built-in solutions for common problems like authentication, CSRF, and testing. If you need those out of the box, use a framework.

But for many projects – internal tools, MVPs, microservices, small websites – starting with plain PHP can save you time and headaches. You can always add a framework later if the project grows, but starting with plain PHP gives you a clean foundation.

Give it a try

If you've never built a real project in plain PHP, I encourage you to try it. Start with a simple CRUD app for your own use. Write a router, a database class, and a few views. You'll learn a lot about how PHP works, and you'll probably appreciate the simplicity.

In a world of over-engineered solutions, plain PHP is a breath of fresh air. It's fast, transparent, and reliable. It's not for everyone, but it might be for more people than you think.