Best PHP MVC frameworks of 2013

Frameworks are making your life easier, since they take care of common tasks you without them would have to repeat for every project or even within projects.

I have assembled a small list of promising candidates for you, they may not be the most commonly used, but they teach best practices, principles like MVC and have communities and thereby helping hands on the internet.

This post was originally written for the semester blog of my class, therefore it also focusses on the types of database queries supported by the frameworks, we have a dedicated module in SQL and databases, which is why it is pretty relevant to the students of my semester.


Update: I’ve started blogging about some of the below in their separate articles, see them here: PHP + MVC at jonathanmh



CodeIgniter is the base for a successful Content Management System, Expression Engine, which is used by people like a list apart.
I know some of your classmates work with this, so you’d have live support.

CodeIgniter Quick Facts

  • Architecture: MVC (nightly with HMVC support)
  • License: OSL the:license.txt
  • SQL Queries: Active Records Support



CakePHP has been around for quite a while and they have gather community and lots of solid code in that time.

CakePHP Quick Facts



Yii is another mature framework that focusses on performance. It’s feature rich and can automate some of the CRUD work for you.

Yii Quick Facts

  • Architecture: MVC
  • License: BSD
  • SQL Queries: Query Builder, Active Records



FuelPHP is a fairly fresh project, but provides a lightweight solution. It comes with oil, a useful command line utility.

FuelPHP Quick Facts



Laravel is yet another aspiring and lightweight framework, which I’ve found through some features in tutorials on net.tutsplus.com.

Laravel Quick Facts



Symfony is a little more enterprise looking framework, it’s very feature rich and well acknowledges among big web app builders.

Symfony Quick Facts



Kohana I have never tried, but it pops up in tutorials and mentions around the web. Their documentation seems to be lacking a couple of points and some links are broken, so it seems a little smaller than the other candidates.

Kohana Quick Facts

Zend Framework

The Zend Framework does only get an honorable mention here, because of their proprietary license.

Turns out it’s actually a very permissive BSD license.

32 thoughts on “Best PHP MVC frameworks of 2013”

  1. Hi there,

    Which Framework would recommend for an advanced-beginner PHP developer wanting to learn the MVC architecture along with an easy to understand/use Framework?


    1. I don’t have an excessive amount of experience with other frameworks than CodeIgniter, but I find it a very good choice for both beginner and advanced users, since it does not force you into crazy opinionated rules. It allows you to be flexible, but comes with a solid set of functionality to take work off you.

      Laravel seems to be a very active project too and the tutsplus.com sites have some nice tutorial on that!

    2. Ruby on Rails.

      I’m a PHP guy at heart and have been coding for seven years professionally. The best thing that ever happened to me was getting thrown into a Python/Pylons project because it forced me to branch out. I now have production code running in PHP, python, ruby, java and C#. Take a day and go through a Rails tutorial and build a blog. They are easy for someone with your skill set, will give you a grounding in the mother of MVC and you will know some Ruby. More importantly, your PHP will get better because of the experience. After you finish the rails blog, come back here and you will be able to form your own opinion on what you want in an MVC framework.

      1. Actually last summer I started digging into rails and I love it. I just got away from it and have not put anything into production with it, because I started playing with node.js instead. I love the source code of ruby and I’m currently writing a book on a ruby project (gitlab). I wasn’t trying to keep people in the PHP world with this list, but my fellow students are mostly doing (after they switched our studies from C# on the go) PHP and it was for them I wrote it.

        I think PHP is still great for especially small and non-realtime sites, plus it’s easy to deploy anywhere.

        Python bugs me because of the opinionated indentation, but my first script for fun was actually coded in python!

        Thanks a bunch for your input by the way, I completely agree with you. Widening your horizon is one of the most important things in our industry.

  2. I have been using CodeIgniter for a couple of year now. Great framework for simple apps. If you are looking to build something more scalable, Lavarel may be worth looking into. It has support for unit tests, ORMS, etc. Some of the most popular CodeIgniter apps are being ported to Lavarel. From what I have read, CodeIgniter and Lavarel are very similar, but Lavarel sort of takes off where CodeIgniter got stuck in the Ellis Lab/Expresssion engine mud.

    1. What I’ve seen so far of Laravel really makes me want to try it out on a project, where I otherwise would have used CodeIgniter. Especially the dependency integration through composer and the artisan tool.

  3. i was using codeigniter for a while. its like an ak47.it just works and works fine. but i advice to use yii, because coding with yii is pleausure and also much faster

  4. CodeIgniter is still a popular contender though I have a feeling Elis Labs have let the community down, It still remains my framework of choice and I would be glad to see it returned to an active community under MIT or google. Its just too big to go under.

  5. Which if any of these MVC frameworks practice pure separation between the View layer and the Control layer.

    For example, when I see PHP code embedded in HTML files rather than template code I personally don’t consider it very “MVC”. For example, CakePHP has some tutorial code that looks like this, which I don’t consider “MVC”. I’m looking for a PHP MVC that uses templates rather then mixing code and HTML together. (I realize a ‘pure’ example might not exist, but the closer to pure separation, the better.)


    Html->link($post['Post']['title'], array('action' => 'view', $post['Post']['id'])); ?>

    Html->link('Edit', array('action' => 'edit', $post['Post']['id'])); ?>


    Any thoughts, or am I being unrealistic in my expectation. (In the above example, I would rather see pure PHP that parses ‘row’ templates in code and then fetches the results of the parse into something like:
    $value) {
    $tmpl->assign($key, $value);
    $html = $tmpl->fetch(‘row’)
    echo $html; // or in some way push the rendered HTML to the ‘View’.

    1. On templating: currently I’m working a lot with node.js and templating engines like jade, ejs and handlebars, so there you basically have another layer. In principle, I personally don’t mind much to have PHP in my views, as long as it’s not logic code. The templating engines have functionality for loops, checking for undefined and so on too. I wouldn’t call that unpure.

      About the code example: I actually don’t know, I usually handle things like those through routes, where an action that applies to a type of data gets a route, let’s say I want to edit a post:


    2. FuelPHP uses PHP (as in .php) by default for it’s view files, but how much PHP you put in there it entirely up to you.

      It also comes with a parser package, which when installed integrates the popular PHP templating engines, such as Twig, Mustache, Smarty, etc.

      FuelPHP implements a combination of MVC and MVP, where the presenter layer (called the ViewModel) can be used to abstract view preparation logic away from your controller, and keep it out of your views. By using ViewModels you can reduce the logic in your views to simple if-then-else and foreach loops.

    3. Very strange to ask which framework doesn’t have embeded php callbacks.
      Yes it does break a bit the true MVC concept, but! Remember — NEVER use template engines on large-scale apps, sites. Smarty, xtpl etc… They all suck as hell in performance to simple “echo”.
      The proper question is which of them doesn’t come with another laggy TPL engine? It’s not a problem to bundle a TPL engine to any framework, but damn hard to remove it from the core.

      1. This is the standard BSD license template, I’m not sure what your complaint is.

        Yii and Kohana, which also use the BSD license and were included in your list, use an identical license.

    1. Thanks! Just fixed that! Can’t believe you’re the first one to point that out with the traffic this post is getting!

      I’ll have a look at Kumbia!

  6. Im surprised CakePHP doesn’t get much mention in the comments, it is mature, MIT licenced, stable, great community and has just the right amount of Automagic to make development swift but still give a decent dose of reality for those who dont like to lose too much control! Plus as it is mature there are a ton of plugins to help code re-usability out on the community.

    I am going to be trying out Rails soon, most of these PHP MVC frameworks are classed as “Rails Clones” so id like to get involved in the original :)

  7. Which framework this will be easy to work with if I use shared host without too much control with its configuration and don’t have access to CLI?
    Thx before..

    1. CodeIgniter is great for that. With Laravel you don’t have to touch the CLI on the server side, you can just deploy it with dependencies. I can just recommend getting more into command line stuff, it teaches you so much and is amazingly powerful.

  8. I use CodeIgniter and Laravel extensively. Both are fantastic MVC frameworks for rapid PHP development.

  9. I work with ApPHP MVC Framework, it’s very simple and intuitive. The best feature is has – an independent modules.

Leave a Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>