Update 2018: The Laravel framework has changed significantly over the past 3 years, it remains increasingly popular.
Zend Framework 2&3 on the flip side has declined in public popularity, but perhaps still has some enterprise and proprietary stronghold (which I have not confirmed).
At this point in time I am no longer an advocate for ZF and Symfony, I feel both frameworks are too monolithic/bloated and one can accomplish more in less time with micro frameworks and external packages for majority of projects.
I find the changes to Laravel 5.x refreshing and love that they have become more compliant and adopted professional software design patterns and architecture, even though there was a significant outcry from their novice users.
Having said this, I still do not like Laravel’s Database Abstraction (Eloquent), and template engine (Blade) for the same reasons as below… not a deal breaker, and if I have to choose a framework for a quick SME build I would perhaps choose Laravel.
I’ve been following the Laravel trends for more than a year now, frequently reading on the Laravel forums/blogs/developer documentation etc., comparing Design patterns and other Geek stuff , searching for things like “laravel sucks”, “why choose laravel” etc., you’ve probably done the same in order to get the full gist on the alternative technology you are hoping to adopt. I ultimately could not resist to pull up Composer and get my own Laravel installation.
My initial opinion of Laravel was good
- Installation was really easy, and you’ll have a full working copy in about 3 minutes.
- The developer documentation is good and to-the-point, but lacks a bit on high-level implementation examples.
- The community is quite big and helpful, although I’ve seen many low-level (noob) questions being asked on the discussion forums, creating the impression that many Laravel developers are junior developers.
After my localhost installation and some further delving into the official documentation, I started investigating the structure/architecture and built some Controllers and Models etc… it was really easy, party because of the good documentation and also because of some “common magic” in the Laravel framework.
Over the hype and under the hood
- Laravel is too dependant on the Symfony framework, one gets the impression of a hybrid framework leeching off the success of another framework.
- Laravel feels like a chaos of mix-and-match – Laravel originally filled the gap between Micro and Full-stack frameworks, but looking at the current version it looks more like its trying to be a Full-stack framework, via Symfony.
In order to use Laravel well, you are forced to learn other 3rd party products as well.
- The Blade templating engine which comes built-in with Laravel just adds another learning curve and frustration.
Since Laravel is already using so many Symfony components why did they not just go with Symfony’s Twig, which is by far the superior and most popular template engine (based off Python Django)
- Laravel’s database abstraction is called Eloquent. At first glance it appears to be quite helpful and doing basic CRUD stuff seams like a breeze. That is until you need to do some real enterprise-level database work, with things like compound keys, multiple joins within join select lookups etc., in an enterprise environment Eloquent lacks quite a bit.
Also serious performance problems with ActiveRecord when you have 100k-1000k+ records in your database, good luck.
- Configuration, routing, helpers etc. looks naive and cannot be fully extended (without major changes), Laravel assumes too much, it assumes how a web application might work, unless of coarse you use the Symfony components which again raises the question, why not just use Symfony.
- The Facades problem, there are many heated debates about this ..more
Why I prefer Zend Framework 2 and Symfony
- Both are professional high-level enterprise-ready frameworks with OOP done right, and taken seriously by major companies
At any given time there is a significant amount of international jobs advertised for Zend Framework and Symfony developers,
- Zend Framework1 was a bad dog and not the easiest framework, but ZF2 is light years ahead and completely different from ZF1, it is modular, service driven and extremely powerful, it scales beautifully with virtually any type of application and performance tuning is great.
- ZF2 and Symfony’s code base is clean and concise, not to mention the design patterns which are extremely powerful. built by some of the best software engineers and endorsed by many reputable companies.
Enterprise support is vital for the longevity of the framework (remember what happened to Codeigniter).
- ZF2 and Symfony might not appeal to novice developers because of the high-level design patterns and implementations – you will also find less high-level seasoned developers working with frameworks like Codeigniter, Laravel, CakePHP – food for thought