I’ve evaluated PHP frameworks, and the answer is Laravel

As part of the first project I’m taking on at Fundable, I’ve evaluated a wide range of PHP frameworks. From CakePHP to Zend, I completed the feature/checkbox table, reviewed code within each one, moved on to finalist selections, ran a couple sample projects, and finally made the pick.

 

#1 Features and Support

framework-matrix
Included frameworks: CodeIgniter, Kohana, FuelPHP, Laravel, CakePHP, ZendFramework, Symfony, Yii

Within the features and support phase, I was able to break down the frameworks into three categories – Legacy, Established, and Up-and-Comers. I’m sure someone can nit-pick my classifications, but as someone who’s seen web frameworks come and go over the 15+ years, I’m confident that I’m not too far off.

Legacy

The legacy group contains those that have a mature core codebase and have been in production for a number of years with a significant number of sites. Any of these frameworks would be a safe choice, but at the cost of the latest language features being absent.

CodeIgniter – As the base for ExpressionEngine, CI is a stable platform and is currently compatible with older versions of PHP (5.x). It has a number of developers via it’s “reactor” program and is wide use by the PHP community.

CakePHP – They are eder statesmen as a project that was started in 2005 and stuck to their primary inspiration of Ruby on Rails. While the framework is still being developed, it has largely fallen out of favor to the newer options.

Established

The established options are those that are in wide use, have an active community, tested codebase, and are frequently chosen for new sites. The established players may be starting to slow down on new language support and clinging onto older PHP version support that other frameworks have chosen to drop (or newer frameworks don’t support out of the gate).

Zend Framework – As the 800 pound gorilla of PHP frameworks, Zend does nearly everything and has the weight to show for it. Many stores and commercial projects are built on top of it, it’s well tested, and constantly being updated. Other than the size, and the processing and memory required, it has few downsides.

Kohana – Beginning CodeIgniter inspired, they began when CodeIgniter clung to PHP4 support. Kohana stays current to new futures, but falls prey to a common issue to software projects – documentation. Saying it’s lacking is gentle. Saying it’s woefully missing is more accurate.

Yii – This framework has consistently flown under the radar but, it’s a solid, small framework for a number of common tasks and it takes advantage of its PHP 5.3+ requirements.

Symfony – This framework has a number of solid third-party libraries in use, such as PHPUnit (testing), SwiftMailer (email), and Twig (templates). They have a quality core, and things are extremely configurable.

Up-and-Comers

The Up-and-comers have come into adoption within the last year or two, embrace new PHP features, have a large amount of active development, and energetic team.

FuelPHP – The team took a number of ideas from CodeIgniter, as well as a handful of other frameworks to create a lighter and more modular option. It has good documentation and a number of CodeIgniter developers have migrated onto the framework.

Laravel -This framework has been around for a while, but seems to have really taken off in version 3, and is being largely remodeled for the upcoming version. While initially heavily inspired by CodeIgniter and a handful of other frameworks, it’s now significantly different in its approach.

 

#2  Reviewing Code

Beyond the feature matrix, I took a look inside the codebase for a number of the options. I looked at the legibility, complexity, and structure of the code, as well as organizational structure of a base project.

I quickly found a theme in folder structure, though many had their own terminology. The idea of “Application/App” and “System/<framework name>/etc” found it’s way into most of the frameworks.

 

#3  Thinning Out the Pack

I selected CodeIgniter, FuelPHP, and Laravel for further evaluation. While there were numerous items that factored into this, I’ll cover a few of them here.

Folder Structure

The common folder structure that I’ve previously mentioned came into play here. Each of the selected frameworks logically separate code in a way that really helps out on a larger project.

Support for Bundles and Modules

Modularity and compatibility for outside libraries was a must. While I can appreciate a lightweight framework, it must also easily integrate with other code. No significant site exists in a vacum. A project might call for a API call to MailChimp, SendGrid, Vimeo, Facebook, Amazon, etc.

Size of Codebase

While surely feature rich, a iceberg sized framework can put undue processing cycles and memory into your monthly hosting bill (no .Net fanboys here). Obviously this metric must be balanced with the feature set and project requirements, but we can find a healthy compromise. Sorry Zend, this is your exit.

 

#4 Sample Projects

I continued on to create sample projects for FuelPHP and Laravel. I had a recent CodeIgniter project on hand, so I skipped creating a new project for now. In creating these projects, I found myself impressed with both. PHP frameworks have come a long way in the last 5 years. I couldn’t knock either in a major way, though I did find the module (“bundles”) availability better in Laravel.

 

#5 Final Selection

In the end it really came down to FuelPHP vs Laravel. As CodeIgniter is primarily an EllisLab project, I don’t have faith that it’ll move at the pace needed for the lifespan of our projects. Not an indictment of the current state, but of the outlook of things to come.

When I looked harder at the communities and momentum of each framework a difference emerged. Laravel is the clear winner here. While they are talking about PSR-2 compatibility, and embracing the Composer system with 3rd party components, FuelPHP is behind. In the end, the team behind Laravel is stronger and moving more rapidly to both stay up to date and push boundaries.

I want to make sure I’m clear here. I found both FuelPHP and Laravel sample projects to be great examples of what a PHP framework can be – something that assists, speeds up, and standardizes the development, while not getting in the way (too much). If I was to come into an existing situation with either one, I feel like it would be a productive result.

With all things said, here are some resources for Laravel should you find yourself making the same selection as I did.

 

14 thoughts on “I’ve evaluated PHP frameworks, and the answer is Laravel

  1. Robins Tharakan

    Spelling / grammar errors:

    – ‘though I did the module’ => ‘though I did find the module’
    – ‘ready taken off in version 3′ => ‘really taken off in version 3′
    – ‘I had an recent’ => ‘I had a recent’
    – ‘though I did the module’ => ‘though I did find the module’

  2. Graham

    Some more corrections:

    eder-statesmen -> elder statesmen
    active community, tested codebase -> active community and tested codebase
    built on-top of its -> built on top of it
    but falls pry -> but falls prey
    Saying is woefully missing -> Saying it’s woefully missing
    advantage of it’s PHP 5.3+ -> advantage of its PHP 5.3+
    third party libraries at use -> third-party libraries in use
    different in it’s approach -> different in its approach
    found it’s way -> found its way
    put undo processing cycles -> put undue processing cycles
    inditement -> indictment

    Thanks for the article. As someone who created and maintained a CakePHP application, I’m always looking for alternatives.

  3. bill Post author

    Graham – Thanks for the feedback. I need to let things sit for a bit before pushing them out in the future.

  4. Kinsey

    I definitely agree with your final conclusion in that Laravel is the best framework but I feel like it is very context specific.

    Laravel is great for most small to medium applications but it is not designed for the type of robustness and flexibility that Zend and Symfony would provide.

    Imagine trying to develop a Magento style EAV app using Laravel. It just simply would not be a good idea. The routing system is too simple.

    One thing PHP devs need to keep in mind is that there is no silver bullet when it comes to frameworks and you need to accurately assess your needs before you choose one.

    All that being said, Laravel is an excellent piece of software that a developer would be crazy not to leverage to their advantage.

  5. Chris

    @bill you’d be surprised…lots of people could read this (and your grid with it’s “all green” for Laravel) as “this is the best framework out there”.

    Even a disclaimer under the image that says something like “Note: these were the criteria I was looking for and is by no means a complete evaluation of these frameworks’ features.”

  6. José

    Congrats for the article, i think i’ll give a look at laravel soon.
    Although, as a CakePHP user for more than 4 years, i must say that the CakePHP analysis present in the matrix is wrong, CakePHP 2.X requires PHP 5.2.8 or greater, and the builtin ORM database datasources use PDO to access their databases. Also it provides an HttpSocket library that lets you interact with RESTful applications quite easily, as well as it provides an easy way to create a RESTful application (just look at the docs).
    Also it would be nice if you had included other important aspects for a framework, just like ACL/Permissions, authentication, db migrations support, etc…

  7. Brade

    This article was fun to read! But I kinda agree with Jose that CakePHP got the short shrift. The reality is that all this competition in the PHP framework world is great, and it forces each project to raise their game. IMO Cake has so many useful features built in with miminal setup that it would take a lot to steer me away. I’ve done small projects with CI, Yii, and looked at the Laravel docs (where I wasn’t overly impressed with a lot of the static method syntax). Maybe I’ll give Laravel a real try one of these days, but the Cake team is always making enhancements and are hard at work on v3. So things will probably even out as they always seem to.

Comments are closed.