Skip to main content
← Back to articles

Native PHP Architecture: Why Zero Framework?

8 min read

The Context

When I decided to rebuild my portfolio site, the framework question came up immediately. Laravel, Symfony, Slim — I've worked with all of them. But this time, the site is the demonstration of my skills. Using a framework would showcase Taylor Otwell's skills, not mine.

The Micro-Architecture

The pipeline is simple and transparent:

Request → Bootstrap → Middlewares → Router → Controller → Service → View → Response

Each component is a PHP 8.2+ class with declare(strict_types=1), readonly properties, and zero magic. The Router is 60 lines. The View engine is 80. The entire application code fits in ~2000 lines.

The Benefits

  • Performance: TTFB < 50ms locally, no 15ms framework bootstrap overhead
  • Total understanding: every line is mine, I know exactly what happens
  • Security: no framework attack surface, no CVEs to monitor
  • Size: zero Composer dependencies in Phase 1

The Pitfalls

The main trap is reinventing the wheel unnecessarily. You need to know when to stop. My Router handles static routes and named parameters — no complex middleware pipeline, no DI container, no service locator. Just what's needed for a portfolio site.

Conclusion

For a developer portfolio site, zero framework is a relevant choice. For a complex business application, I'd use Laravel or Symfony without hesitation. The key is choosing the right tool for the context — that's what software architecture is about.

Keep this portfolio close

On iPhone or iPad, open this site in Safari, tap Share, then “Add to Home Screen”. On Android or desktop, use “Install” in your browser menu when available.

Previously visited public pages remain available offline when a saved copy exists. The contact form needs a connection. No message is sent in the background.