Tales of an IT Nobody

devbox:~$ iptables -A OUTPUT -j DROP

Laravel/Lumen vs Symfony/Silex a corporate perspective May 30, 2015

YAPFC. Yet Another PHP Framework Comparison. I’m judging Silex and Lumen through their bigger brothers, Symfony 2 and Laravel 5.

After doing some extensive research, re-evaluating the PHP framework atmosphere, two frameworks and their respective “mini-me” counterparts seem to rule the seas.

In this post I’m simply sharing my opinion of Laravel and Symfony and their lighter-weight counterparts: Lumen and Silex. Drawing from my 15 years as a PHP developer, 10 as a professional (aka: full time employed) I am drawing from my perspective as a small business owner who does contract work and a government employee.

The winner is (for this developer): Symfony / Silex.

Let’s just start: I’m resting my laurels on Silex. (and Symfony).

As a business owner, it’s my job to choose  the best balance between productivity and production for my clients. As leader of a development team, my concerns are pretty much the same, but I have to answer for more than being my own boss on the side. These are my points as to why I feel confident saying this (right now).

Quick note: Laravel is a very nice framework – if LTS was offered and there was a demonstrated history of design stability, my vote would be different.

1. Longevity.

Symfony offers LTS (long term support) for it’s versions, it’s corporation backed and has THE following of experienced developers doing their thing. This is extremely important to know, because that means the rug won’t be pulled out from under you from version to version. There’s a highly structured process in place for dealing with upgrades and notifying of BC breaks. Silex absolutely benefits from this.

Laravel on the other hand is more of a one-man show than Symfony. In my travels, I examined the version history of Laravel and Symfony, and I found that Laravel was simply too volatile for adopting into the environments that I work in. For lack of a better phrase, cutting edge in Laravel at times have clobbered those who chose to jump in with both feet at a more frequent cycle than Symfony. Lumen will have the same woes.

(Re-read that: at a more frequent cycle, PROGRESS has a cost – but there needs to be a methodical approach for enterprise environments to feel comfortable).

Not quite ready

Not quite ready (http://www.reddit.com/r/PHP/comments/1eld2t/why_would_anyone_choose_laravel_over_symfony_or/)

2. Opinionated

Lumen is easy to set up – because it’s opinionated. Opinions in my world mean you’re harder to “slip stream” into a code base refactor. Can you gut it and make it your own? Yes. But that’s just as much work as starting with something without an opinion, right?

Silex is barely opinionated. Almost no training wheels, which makes it more hostile for inexperienced developers.

That’s it!

Really, those are the things that rub me the wrong way. I think Laravel/Lumen have a lower learning curve (due to opinion) and you truly can get off the ground faster with Lumen in my opinion. However, these frameworks largely do the same thing.

This is a somewhat painful decision

I honestly like Laravel/Lumen a bit better in regards to learning them quickly. Laracasts are a true contribution to the community – not just bettering the cause of Laravel.

I think in a few years, Laravel will become the big kid on the block that it deserves to be – but right now there’s too many warning flags going off regarding API stability and decision making.

Somewhat painful?

Yes! Laravel and lumen ship with Eloquent out of the box. It uses the active record paradigm and AR can’t hold a candle to a data mapper pattern in terms of protecting yourself from your dependencies.

This really rubbed me the wrong way because it’s like giving a loaded gun to an inexperienced developer (or team). I expected a better ORM architecture for a framework for artisans.

I realize I can ignore it, and use Doctrine – but really, they should not have coupled an ORM from the get go. It’s a “crack factor” for the framework in my opinion.

Categories: php programming
  • vik says:

    great post, actually in situation where i need to choose one framework

    considering symfony vs. laravel vs. zend

    silex as microframework looks very appealing, i do not really like all that abstraction and dont necessarily need MVC, as long as it’s resource friendly and fast, in silex i see you can quickly reference component u need and just use it

    so in 2016, u still liking silex/symfony better?

    also do you have a preference over ajax frameworks like angular etc… i love jquery but reading that angularjs is the new better thing… had a look at it but frankly all that simpler code e.g. for data binding am finding it confusing

  • Théo says:

    “I think in a few years, Laravel will become the big kid on the block that it deserves to be – but right now there’s too many warning flags going off regarding API stability and decision making.”

    The issue with Laravel and Lumen is not the API stability (although it is one), but rather that it promotes bad practices:

    Service Container with only auto-wiring
    Static calls
    Active Records
    Lack of flexibility

    “bad” is a big word. Of course nothing is black and white. Laravel did choose them for a reason: simplicity. It’s more simple to use and to get started with. The issue with it is the lack of testability and maintainability. If you are a good developer, you will be able to build a testable and maintainable application with Laravel too, but it will require more efforts than with Symfony. The reason is very simple: Laravel is a more simplified and opinionated version of Symfony (and Lumen is just a REST API version of Symfony, like ApiPlaform is for Symfony).

Leave a Reply

Your email address will not be published. Required fields are marked *