Best PHP Frameworks for 2014

Update: If you’d like to take part in the next high-yield survey from SitePoint, please vote for your favorite IDE here. The aim of the survey is to gauge the PHP community, and to find the most popular IDE in use today, by gender, location, skill level, and more.

The end of the year is upon us. Lots has changed in the PHP world in the past 365 days, and the PHP framework scene is more densely populated than ever. Everyone and their dog seems to have an idea of what a good framework should look like, but in the end, do we even know which frameworks actually end up being used in production projects? How many go beyond the stage of thousands of people just doing a demo app in them?

In a small survey we've held open for the past week or so (which has also been mentioned in PHP Weekly), we asked these questions to decide which frameworks deserve our attention in 2014 the most. The prerequisite for participation was merely having experience in more than one framework, seeing as it's pointless to ask someone what their favorite bar was if they've only drunk in one place.

Unfortunately, a big percentage of the answers had to be discarded due to people either refusing the notion that WordPress and similar suites aren't frameworks, or simply due to a blatant disregard of instructions – many responses were written by people who only ever worked in one framework. While their enthusiasm for this framework of choice is noteworthy and admirable, the final result which may end up being skewed by such approaches could hardly be called objective.

Results summary

After discarding the invalid responses, and manually verifying every participant, we were left with the following data:

chart

According to the results, the most promising frameworks for 2014 seem to be:

  • Laravel
  • Phalcon
  • Symfony2

Yii and CodeIgniter seem to be sharing 4th place.

After weeding out the obvious spam, the Laravel results had to be filtered the most, by far. Over half the people who voted for Laravel had zero proof of proficiency, or experience only with Laravel, and had to be discarded – despite this, it still prevailed.

When looking at the answers, on average, the Laravel community seems to mostly favor the ease of entry – virtually no learning curve. Whether that's good or bad is a discussion for another time, seeing as we ended up in this "PHP is bad" mess mostly due to a horde of newbies considering it an easy to enter market, but the excellent documentation, large scale community support and speed of development definitely work in its favor. Another frequently mentioned advantage seems to be an active and impressively alive IRC channel where help is given instantly.

An interesting misconception seems to be that Laravel is responsible for Composer. Many voters, both discarded and valid ones, mention Composer as the main advantage of Laravel, alongside Eloquent ORM and the Blade template engine, which is downright odd seeing as Composer is a package manager completely oblivious to the framework it's being used with, if any. For more information, I urge the participants in question to read some of our Composer articles, like this one. Despite all this, having only tried Laravel in demo projects, the results of this survey have piqued my interest enough to build my next production project in it, powered by HHVM.

Phalcon's main advantage was performance over other frameworks and the fact that the framework is such a rounded up package (ORM, template engine, PHQL and more – all in one – little to no need for third party libs, meaning everything stays in-memory, C-based and super fast). Some of the respondents noted the fact that it's installed as an extension as an advantage, because the process of installation weeds out the hobbyists from the serious developers, a notion I personally tend to agree with. When mentioning cons, Phalcon's biggest one was also its biggest advantage – being written in C, it's nigh impossible to check under the hood.

Symfony2 is touted as the most modular and extensible of the bunch, and the most feature complete, mainly due to containing Doctrine2. Its voters, however, do seem able to admit that it's quite bloated and slow at times due to this feature-richness.

Interestingly, two ZF1 answers said they're stuck on said framework because of the work situation – their team or CTO refuses to switch to something more modern.

Noteworthy answers

Among the valid answers, here are some detailed enough to warrant a repost:

navarr says:

Yii's built in ActiveRecord and migration systems make version control of the database easy and development using objects quick and painless. It takes a small amount of time to learn but become super simple afterwards – becoming worth it's namesake "Yii" – Chinese for "easy"

@amitgupta says:

I've used CodeIgniter for years but eventually came a point where it didn't offer what I needed. I needed a somewhat full stack framework (so micro frameworks like Slim, Silex were out) with little or no learning curve (just like CI), which had a neat & clean intuitive API, solid code written on proven design patterns, which didn't bind me in one mindset, which was fast and had good documentation, which allowed TDD without fuss and which had a good community & resources available. Also one which allowed me to take a peek under the hood easily so I can see what goes on where (which ruled Phalcon out since its source is in C). Laravel & Symfony came very close but I eventually went with Laravel as I liked how it did things more.

panique doesn't use any of the listed ones, and says:

Most frameworks are simply too advanced, making it hard for non-professional developers or frontend people to quickly build good things, so I was always searching for a naked and totally stripped-down PHP barebone application. php-mvc solves this problem and reduces the learning curve to a total time of under 30 minutes while still being very professional and self-explaining.

+Jream says this about Phalcon:

Provides all the core components I need to get going fast, beautiful ORM. It's feature rich, insanely fast, and has amazing documentation.

Chris Thompson proves that exposure and name mean much in the PHP world by saying this about his choice of ZF2:

I was already familiar with ZF1 from a previous project. ZF2 seemed the most logical one to use for our next project. We didn't have any experience with or exposure to most of the other frameworks. Ones that we were aware of had less documentation, examples, and online help (stackoverflow) than ZF2.

Peter Nijssen explains:

Been working with CodeIgniter for 4 years. Always suited me well and I wrote some sparks for it. Always has been a nice quick framework to start with. Easy to use. Since CodeIgniter was not on going anymore, while PHP made some major steps, I came in touch with Laravel. Immediately fell in love with it and still love it to this date. A framework which works excellent and is very developer-friendly. In my daily job, we are migrating everything from CodeIgniter to Symfony. In my personal life I would pick Laravel, while in professional life I would pick symfony. Laravel is more developer friendly and makes it a breeze to develop against. Symfony gives me currently more trust in the fact that they have been proven themselves already for years. Of course, both contain their similarities by Laravel who is using Symfony parts.

Thiago Colares chooses TYPO3 Flow:

Architecture-ready for domain driven design. Dependency injection. Uses the Doctrine 2 ORM. Advanced template engine (Fluid). Strong, active, very skilled and helpful community

Rob Keplin says this about Phalcon:

It takes advantage of other popular framework's features such as event management, an easy to use ORM, all while promoting DI and taking advantage of newer PHP features like native namespaces. Since it is built as an extension, the framework has very little overhead. Not to mention the documentation makes for an easy learning curve. The only drawback is portability and I'm not able to dig through the library code while developing. But I'm really excited to see it grow and become more popular.

… and Sean M adds

Phalcon makes it easy to design modern web application correctly, and makes it hard to design them incorrectly. Using direct injection, it is trivially easy to create software that tests fully end-to-end. An ORM that makes sensible default choices and is hugely extensible and configurable, multiple caching strategies, and built-in DB libraries for tons of helpers to allow for easy horizontal scalability. Add in the huge speed gains and trivial memory usage realized by using a shared-library written in C for all your requests, and you get a stack that is a true pleasure to work with and an absolute workhorse in production.

@DwightConrad about Laravel:

Laravel uses the solid, tested components of the Symfony framework along with other popular packages to provide a modern framework that provides easy conventions, utilises modern programming patterns and makes development a breeze. It is refreshing to see PHP used as a modern programming language with a framework that takes hints from some of the big names outside of the PHP community.

Stanlemon favors Symfony2:

Architecturally I prefer Symfony 2. I think it's attempt at componentization is admirable and the overall approach of bundles is brilliant. At times it can feel bloated and still at other times I wish it were more opinionated, but all in all it represents the only full stack framework that just lets me get things done the way that I want to. The use of Doctrine 2, Twig and Monolog and a powerful approach to functional testing is only further encouragement to use it.

Editor's choice

It's no secret I'm a fan of Phalcon. I've used Zend 1 and 2 in large scale enterprise projects for years, and I did my time with CodeIginter. After testing (no commercial experience) all the frameworks in the list, I came to the conclusion that, deep down, they're all incredibly similar (except for Zend, which just stands out like a sore thumb). It was upon that realization that I redirected all my focus on the performance/robustness ratio instead, and found Phalcon. Phalcon has been sufficiently covered in previous articles – suffice it to say that having such a blazing fast framework pre-loaded in memory does wonders for your cloud bills (whether you use AWS, Azure or any others – the instance hours are delightfully shaved off – more on that in a future article).

The fact that it's harder to install than the others (and nigh impossible on shared environments) also makes sure the community is a hardcore one, filled to the brim with people who are genuinely interested in it enough to not get bogged down by the basics. This means a tighter-knit group, but far more knowledgeable.

Conclusion

So which framework seems most promising for 2014? Which should you switch to in the new year? Is it worth it? That's entirely up to you – as always, it depends on your comfort level, the project requirements, and time you have to study new things.

The only wrong choice is constraining yourself to only a single framework. Diversify, experiment, contribute. Step out of your comfort zone and try something new – there's no other way to grow. Perhaps next year, you'll vote differently!

I want to personally thank you for participating in the survey, and being our readers. We hope to bring you increasingly more awesome articles in 2014, and look forward to sharing the knowledge of our amazing authors with you. The entire team here at SitePoint wishes you a Happy New Year and jolly holidays! See you over the hump!

Free book: Jump Start HTML5 Basics

Grab a free copy of one our latest ebooks! Packed with hints and tips on HTML5's most powerful new features.

  • http://rschu.me/ Robin

    I’m agree with Laravel and the first place :D

  • Michael Bodnarchuk

    I’d add to conclusion: don’t stick only to one language as well. Learn more from Ruby, Python, JavaScript and others.

    • http://www.bitfalls.com/ Bruno Skvorc

      Agreed!

    • John

      That’s nice in theory, in the real world you’re drowned in pending work that has to get done ASAP and right the first time so you use what you know best. Clients aren’t paying you to experiment at a snail’s pace and learn on their projects.

      • kaning

        I think in spite of a heavy workload, you still need to make the time to expand your skillset i.e learn new things. Unless of course you are working for 24 hours 7 days a week, even 30 minutes a day to read up on something new will go a long way.

        • http://www.bitfalls.com/ Bruno Skvorc

          Absolutely correct. I personally pick projects that not only allow but also encourage new technology, but back before I quit my job to freelance I used every spare moment at work I had to get familiar with something new.

      • davi koscianski vidal

        You already know how to program. Learn a new language should be a matter of learn a new syntax (and sometimes new paradigms).

        If you’re a web developer, you already (should) know PHP and JavaScript, you are half way down to at least Python and Perl.

    • Evan Borden

      I’d add LISP and Haskell to that primary list.

  • dawgbone

    Phalcon is fun until you need to do a stacktrace.

  • AntneeC

    I find it worrying that so many people quote ORM as a redeeming feature. It’s a lazy solution for developers who would rather not learn optimal DB practice. Objects do not translate neatly to RDBMS, so unless you’re storing in an OODB then learn how to properly design database schema or hire a proper DB dev. Don’t rely on ORM!

    • Taylor Ren

      To some extent I agree. However, optimal DB practice is not equal to “No ORM”. Indexing, Stored Procedures, Access Control are those aspects missing being discussed.

      • Anthony

        I did say “don’t rely on ORM”, not “don’t use ORM” :)

    • http://www.isights.org/ Michael Long

      A good ORM allows developers to concentrate on getting the work done, while ensuring that the data is validated and handled correctly each and every time it’s accessed, used, and saved.

      There’s also the concept of not pre-optimizing your code. Adding a user to a CMS, for an example, is a great use of an ORM. You want to create a new user, set the name, and save it. All the developer need do is say $data = new User(); $data->setName(‘Fred’); $data->save(); Done.

      Plus the SQL is hidden, the datasource is hidden, the field and table names are hidden and as such everything is nicely encapsulated. OOP, you know.

      Now, if you check your logs and find out you’re being bottlenecked somewhere, then, and only then, do you need to go in and hand-optimize a particular query.

      ORM hate basically comes down to the fact that many ORMs are complex and at times limited representations of the data. And that’s true. But for 90% of the work of pushing data to and from a screen, they work just fine and they’re well-suited to the task.

      An ORM is a tool, and like any tool, you have to know when to use it…

      • Anthony

        You’ve just described an object with a method to save itself, effectively a serializable pattern. This is not necessarily ORM, this is just sensible practice in many cases. Your save() method may implement an ORM in order to perform the save, but it may simply include an SQL statement to save the record. I’m referring to ORM in the context of libraries like Doctrine ORM that can take the whole RDBMS layer away from the developer. The developer never understands the true nature of the underlying persistent storage engine and thus the schema and the object mirror each other almost precisely, even if it’s not appropriate. I appreciate that you often come back and improve later, but I’ve been on the receiving end of some incredibly poor DB designs that have left us with an enormous task to improve. What those DBs needed was an experienced DB dev to design the schema as well as possible from day 1 and to provide SPs etc to the web devs

        • http://www.isights.org/ Michael Long

          An object with an insert, update, select and delete method that will be correct and which the developer didn’t have to implement. Not so much of an issue with a table or two, but go into a full-fledged application with hundreds of tables and cross-references, and the code starts to add up significantly. And that’s just for the model layer.

          You seem them to think that we’re taking “control” away from the application developer and… you’re right. Thing is, the vast majority of the time the developer should not know nor care about the back end implementation. Here’s the interface to the data. Use it. The back end may be an ORM over a SQL DB, an optimized SP on same, or a link to a app server returning JSON, or even NoSQL or LDAP. Properly implemented, you might even switch from one to another in the middle of the process without the developer even noticing.

          And a poor design is a poor design, period. It’s true that many projects would benefit from an experienced DB developer doing the implementation work. But I would prefer that developer spend his time on things that matter, and not waste it writing yet another set of generic SPs to do fundamental CRUD operations.

          This applies doubly so to applications that are developed using Agile or rapid-prototyping methodologies. In many cases, you don’t even know if you’ve solved the client’s problem until he’s had a chance to use the application. And wasting hundreds of hours hand-crafting SQL statements and SPs on something that might need to be heavily modified or even thrown away in the next iteration is just plain stupid.

          Now, if you want to rant against the people who ONLY know how to use an ORM… then I’m with you there. Because that’s just as bad as someone who refuses to use a given tool simply for ideological reasons.

          An “experienced” developer knows and masters his tools. All of them.

          • Anthony

            Sure, I’m not suggesting that a PHP dev (for example) should also know SQL. Simply that relying on ORM is not always (or in my experience very often at all) the answer. I’ve seen a few frameworks (not just PHP – Django, I’m looking at you) proclaim their ORM is amazing and saves any need for understanding the underlying DB and a lot of faithful devs follow blindly. Hell, you can’t even rely on a single SQL statement being suitable between storage engines when you look at MySQL. The differences between MyISAM, InnoDB and NDB being enormous. I spent a lot of time rewriting SQL after we switched from InnoDB to NDB because queries that used to take less than 0.1secs suddenly took over 30secs. I don’t believe that an ORM will be suitable in these cases either and it’s rarely an adequate replacement for a skilled DB dev, unless you’re looking at really simple queries (add user, update setting etc)

  • Azfar Niaz

    Laravel utilized many features of Symfony2, so it seem if you are using Symfony2, you didn’t make a bad choice either.

  • http://lennaert.nu/ Lennaert van Dijke

    I think we should follow CakePHP. They are in the middle of developing version 3.0.
    It will be a major release and almost a new framework, especially focused on the latest PHP features.
    Keep an eye out :-)

    • http://www.bitfalls.com/ Bruno Skvorc

      Roger that, good to know

    • Kevin Naidoo

      Agreed , had a look at the developer preview; the new ORM looks fantastic and more in-line with modern PHP pratices.

  • Martin

    I like the article overall. I’m just gonna nitpick and say that your graph sucks!

    A bar graph with sorted results (not alphabetical) can express your message a lot better.

    • http://www.bitfalls.com/ Bruno Skvorc

      Agreed, will update!

    • http://www.bitfalls.com/ Bruno Skvorc

      Done, hope this one is better. Interactive one will be posted soon.

  • Xander

    laravel i love you

    • Kjeld

      I have used Yii, its nice… but I wan’t to run on Google App Engine.
      Most dont run there, laravel does!
      It works great togeter so for me it is the future.
      Also if you dont need much stuff but only some sql help, than look ad redBeanPHP ORM tools. very handy stuff.

      • Xander

        You could also just start a new PHP composer project, then include all illuminate classes. Also Laravel comes with a terminal command called optimize to speed the framework on the production enviroment.

      • http://www.bitfalls.com/ Bruno Skvorc

        What doesn’t run on GAE? Except Phalcon?

        • Xander

          brr GAE.. scavengers, data mining scavengers

  • Manuel

    Thank you Bruno, great article! I would like to write about your results on my website.
    How many votes did you have? I think this is very important to get a feeling about these numbers. The trend maybe the same with only a few votes, but it would be very useful to set your results in a proper relation.

    I am using Symfony2 btw. at http://www.der-webdesigner.net and I like it very much. I started with Zend Framework, but I really hated it. I can’t explain why in detail, but Symfony2 seems to be so much better, especially the documentation.

    Best wishes from Germany!
    Manuel

    • http://www.bitfalls.com/ Bruno Skvorc

      Thanks for the feedback, Manuel! I agree about the number scope, it’s good to know that data, I’ll update the article – the final tally was 107 valid responses, after weeding out over 300 invalid ones total.

  • Kasun Perera

    Laravel boost my career :)

  • Marco Roest

    When I started to look into which framework to use (1,5 year ago) I ended up with Symfony. To me this seemed like the most advanced framework available and this is one of the reasons why I choose symfony2. I also looked at laravel (since laravel is using some symfony components – which definitely tells you something about code quality) but there weren’t as many high quality (usable) bundles available for laravel as there were for symfony2. I recently looked into this again (last week), finding out this is still the case.

    Many people decide to use a framework because they want to save time on repetitive tasks so they can focus more on the business end of their code.

    I urge people to don’t just look at this graph (which represents people using a framework) but to also look at available bundles (extensions) for this framework and the participation of the community in these bundles.

    My experience in building large(r) enterprise solutions is that using a correct framework gives you a 20% advantage. The other 80% is coming from resusable extensions/bundle/modules. Find out your needs and check which extensions are available (if any!) for each particular framework. Then have a look on github to see if it is still being maintained (look the open issue/solved issue ratio).

    • http://www.bitfalls.com/ Bruno Skvorc

      Good point, thanks for the feedback

    • http://ortz.org/ Ortzinator

      What kind of Laravel packages are you looking for and not finding? Also remember that because of Composer there are many packages (such as Sentry) that can be used with almost any framework.

    • drumaddict71

      I have been using Yii for the last 3 years,and I decided to try out Symfony2.Spent one week reading the book and cookbook,then finally installed the standard edition in my local virtual host .I got a 4sec page loadtime for the Hello world demo.My requirements check is green and I even optimized realpath_cache_size in php.ini and disabled loadClassCache in app_dev.php.I couldn’t get under 3sec loadtime for a simple *Hello world* page.Seriously???This thing is bloated.

      • Rémi ALVADO

        You’re using the dev environment. This is perfectly normal : all configurations are analyzed for each and every requests you made, the full dependency graph is compiled, all templates are compiled, lots of debug features are activated to help you with your work, … :)
        Try using the app.php frontend controller instead. Everything I just wrote will be cached at the very first request.

        Honestly, you should not consider performances as a silver bullet to compare current PHP frameworks. They are pretty much all blazingly fast when running in a production environment with the proper configuration (they all have tons of articles to set it right). Moreover, with the use of HHVM to run them, the differences between them are even more tiny :) 99% of time, the performance issues projects are facing are due to business constrains, bad code, bad architecture, … but less and less due to the frameworks itself.

        • drumaddict71

          First things first,4sec pageload normal??that would make development a nightmare…Your answer comes minutes after I have resolved this huge pageload time issue (thanx to stack Overflow).I use VirtualBox Ubuntu server and I expose the public folder as Samba share on my Windows7 host,this is what causes the huge lack.I installed Symphony2 in native Windows7 XAMPP public folder and now I get anything from 380ms to 480ms for the Hello world Demo-(although I am not sure this is fast for a simple Hello world.).So my bad,I must admit I was a bit quick to blame symphony2.So I might give it a try for some time,but I am definitely sticking with Yii2 when it’s production ready… :)

          • Marco Roest

            I had the same issue recently on a server with slow disk IO.

            On a more ‘responsive’ server I get these numbers:
            A hello world takes 200ms on my dev environment. (80ms on production environment) My best bet is that you are on a host with a slow disk IO.

            Using APC or Opcache would help (although I usually disable opcode caching on the development environment for obvious reasons)

          • Martin

            You should use Vagrant. It’s actually Virtualbox that is pre-customized to be a development LAMP box.

          • drumaddict71

            I have heard about Vagrant,and I might try it.It’s best for team development,where everyone must share the same environment.Ubuntu Server comes with an option to install LAMP stack,it;’s very straightforward.

          • http://www.bitfalls.com/ Bruno Skvorc

            That’s a common misconception. Vagrant boxes are excellent for solo devs, too, because they allow you to test different configurations on the same code you write, and let you do it without polluting your main host machine with needless software, keeping it fast and stable. When you break something in a vagrant box, just destroy and rebuild it, 5 minutes and you’re back to where you were. See http://www.sitepoint.com/build-virtual-machines-easily-puphpet/

          • drumaddict71

            I use an Ubuntu Virtual Box.I can install/uninstall software,and I can take snapshots of my system to which I can revert instantly whenever I wish.I can even backup my whole virtual machine.It’s not different from what you are describing but I will definitely look at Vagrant in case I am missing something!

          • http://www.bitfalls.com/ Bruno Skvorc

            Vagrant is GUI-less, and connects a box to your network interface so you can open the website you’re developing in the VM in your own browser on the host machine, and you can use your host machine’s IDE to develop the code that gets executed via the VM and served to your host browser. Vagrant is more a middleman that lets code get executed via a specific environment without you feeling it, while usual Virtual Box VMs are actual virtual desktops which usually don’t match the production environment you intend to deploy to. I used your way before, but I encourage you to give PuPHPet and Vagrant a go, I guarantee you’ll fall in love with it once you try it.

          • drumaddict71

            I will definitely take a look at Vagrant,thanks for the tips Bruno.

  • http://www.bitfalls.com/ Bruno Skvorc

    Thank you! I too was surprised by people mentioning PEAR.

  • http://www.bitfalls.com/ Bruno Skvorc

    The response numbers were too small to account for the geographic factor, sadly. My experience was quite the opposite though – I only heard of Phalcon in Europe (am EU based myself), and never on US projects.

    The next survey (in some 6 months) will take into account geography, business vs. personal use, and other vectors I didn’t include in this one. Hoping for a far bigger response.

  • http://www.bitfalls.com/ Bruno Skvorc

    That one is stuck in 2001 though, featuring some long dead frameworks and ancient versions. It also aggregates through time, without diversifying by year. Don’t rely on that resource even a little bit.

  • Guest

    > The fact that it’s harder to install than the others (and nigh impossible on shared environments)

    I think that as it gains more prominence and comes into mainstream, hosting providers would start bundling it on their shared hosting plans. It has been same with some others like Ruby on Rails, when it was new you had to either go with a RoR host or roll out your own VPS but RoR is now quite common on shared hosting plans as well.

    • http://www.bitfalls.com/ Bruno Skvorc

      Good point, there’s high chance of that happening. It’s been one of the most requested cPanel features for a while now.

  • Juukie14

    Great article / survey. I’m using Laravel since version 3. Slim2 did well on a small project I liked the simplicity of it.
    Phalcon has caught my attention a time ago but I keep this as a ‘I will play with it when I’ve got time’ thing.
    It’s nice to see the php frameworks leveling up, 2014 will be lovely :)

    • http://www.bitfalls.com/ Bruno Skvorc

      Cheers! Let us know if you learn anything awesome, could always use more authors ;)

  • http://www.bitfalls.com/ Bruno Skvorc
  • MrCroft

    Your title says “best php frameworks…”. I’d also like to see “most used frameworks…”. I mean, let’s say you had 1000 answers, from which you’ve discarded 500. From the 500 left you have your graph. But what if 400 of the discarded 500 preferred one of those frameworks that nearly have 3% in your graph? (I’m exaggerating here, but it’s not impossible).
    That would completely turn the graph around. It would mean that, although Laravel is ranking 1st as “best to use” it wouldn’t actually be the most used framework.
    I’m a Zend Framework fan myself. I started to work with version 1 since it was used on projects by the team I work with. I’m actually a front end developer, started to fiddle through the framework mostly working at the front end part. Then I’ve decided to learn a php framework (until then I only did php as freelance, small occasional easy-money projects in plain php). So I’ve decided to learn a php framework. Since zf1 was the preferred framework at my workplace and also my colleagues programmers advised me to choose zf (some also had experience with other frameworks), I’ve decided to pick zf. I immediately grew fond of it. 2 years had passed. Now I’m starting to adapt to zf2.
    Yeah, it’s a steep learning curve (even coming from zf1). I’m still a front end developer for my permanent – full time – day job, because it gives me so much flexibility and spare time to freelance in php and I really hate having deadlines, I like to sit back and really think things through as if every project I work on would be a personal one.

    Meanwhile, I did have a chance to look over another framework (code igniter). It seems childish after my last week spent migrating to ZF2. I do have headaches (which is making my tooth headache even worse, I really have to go to the dentist) but I love it. The steepest, the hardest to tackle – gives the more satisfaction. I do know what people are saying about the learning curve, but that actually is one of the CONS for me, it’s not among the PROS. If I choose a framework (or any other thing in life) I look for the one thing with the steepest learning curve, I don’t want something that everyone could also easily get into. Let’s abstract here a bit, let’s say that frameworks are soccer balls. Every php framework is a a soccer ball. We have the Yii soccer ball, the symfony, the zf1, zf2, cake, CI and so forth. Some are deflated, some are moderately inflated, some are inflated almost to the limit. But I can spot one ball that’s bursting at it’s seams: ZF2. It’s so jam-packed with much more than one would need out of the box that it’s almost bursting, feature upon feature and alternative features to alternative features at an enterprise level. Sure, that involves many configurations and sleeping with the documentation under the pillow, but those soccer balls are not for the physical sport, but rather like treasures valued for their content. To me, the winner is the one bursting with features and that also has a steep learning curve, which makes it less accessible, but in the long term you have much to gain. Of course, I’m the type of person that even if I utilize 30% percent of something, I still like to know that I have so much more available (even if I never use it, I just like to know that it’s there – that’s why, for example, I never buy a regular version of a software, I have to have the “ultimate” version… I don’t have the money right now? That’s ok, I’d rather wait one more month or even two, but have the “ultimate” version in the end. I have no use for many of those extra features, but I’d like to know I have them available).

    Sure, if I’d have to tackle on a project with a rigid deadline and never had worked with zf (therefore would need to choose a framework to tackle for the first time), of course I would have to choose Yii or CI, <em> on “have to”. But, since I only freelance in php and everything started as a personal project in the first place, no deadlines no requirements of any kind, I could afford the luxury of free-will and choose zf, no matter the learning curve. So, yeah you could say I’m “biased” to say “heck yeah, zf is the way to go” because there was no one and no thing to force me into having to make a choice based on “time is ticking” or “steepness of the learning curve”.

    • http://www.bitfalls.com/ Bruno Skvorc

      Great feedback, thanks, I’ll take the “used” vs “preferred” into consideration for next time.

      I’ve used ZF1 for years and then ZF2 for two more years, rewritten the enterprise project originally built in ZF1 to ZF2. After (and during) that, I tried Yii, Laravel, CodeIgniter and finally Phalcon. I found out that Phalcon was more robust than ZF, and all the components I needed were available via composer anyway. No need for the default bloat. When you consider the anti-patterns Zend is riddled with, too (try using a component outside ZF – they say it’s all independent and modular, but it’s not – everything breaks unless you also use their ServiceManager etc…), it just became obvious it’s too much of a waste of time, and money – because of the performance. Most other frameworks outperform it by a large margin, which matters a lot in cloud deployment instance hour bills.

      Still, it’s admirable you go for the most complicated stuff. I wish you luck in conquering it!

      • MrCroft

        Well, if you’re a real programmer, I guess you get out there and are able to take any tool at your disposal and also objectively state the pros and cons of each framework. Me… I’m more of a zf groupie (hardly ever looking left/right). If I read a pro zf statement, I like it and take it into consideration; if I read a con I mostly disregard it. Since php is mostly a hobby for me, if I take on a project I stay far away from enterprise, I’m a bit lazy… So, I actually (have time to) learn more than I work.

        Thank you and Best of luck to you too!

        P.S. Yeah, holly Service Manager :)

  • http://www.bitfalls.com/ Bruno Skvorc

    That’s in no way Laravel specific though. Any framework, any app whatsoever supports composer and packagist packages.

  • http://www.bitfalls.com/ Bruno Skvorc

    I’ll consider it, but it’s a bit too much work at this point in time, removing the private data and whatnot (I had already massacred the original result set during filtering). If I find time, I’ll update the article and host the results, yes.

  • http://www.matthewsetter.com/ Matthew Setter

    I have to agree with @michaelbodnarchuk:disqus. As someone who’s focused for too long on a limited set of tools, I appreciate the importance of a wider appreciation and knowledge footprint, both within a language and across a wider spectrum of languages.

    More specifically on the frameworks; is any one right or wrong? I’d suggest that that can only be answered by looking at the skillset of your team and the needs of your project(s).

    A big thanks to @brunoskvorc:disqus for compiling and annotating the data.

    • http://www.bitfalls.com/ Bruno Skvorc

      Cheers!

  • Tsegaselassie

    Surprised to not see FuelPHP in the list of frameworks. Did you get any result on that?

    • http://www.bitfalls.com/ Bruno Skvorc

      Not a single one. There were some votes, but had to be discarded.

  • http://jaf.ar.com/ Jafar

    PHP Fat Free Framework!

  • Pratik Shah

    I have just started with Laravel and I think so that it has very low learning curve and excellent community! :)

  • Harut Margaryan

    java, c#, .NET everything is needed for learning good and modern programming

  • http://www.hightechredneckwoman.com Becky

    Perfect timing for me to run across this article. My company has been using CodeIgniter since I started here a little over 4 years ago. The fact that EllisLab is dropping it (or looking for a new owner for the project), I’ve decided to start looking for a new framework to use for our projects.

    I’ve run across Laravel a few times and was leaning toward that. This article has provided me with a good amount of info to use in my search for a new framework. Thanks!

    • http://www.bitfalls.com/ Bruno Skvorc

      Glad to hear it helped!

  • http://www.sinaneldem.com.tr Sinan Eldem

    I love coding with Laravel, it empowers my projects!

  • iefreer

    the survey result is not true, regarding multilingual doc support and performance, Yii is much more popular than Laravel or Symphony2 in China, I guess the survey was only prepared for English readers.

    • http://www.bitfalls.com/ Bruno Skvorc

      The survey was only “prepared for English readers” in as much as it was written in English. Everyone was invited to participate. Perhaps the next one will fare better, geographically speaking.

  • Fai

    In Cantonese, easy sounds like ‘Yii’. In Mandarin, easy sounds like ‘Yi’.

  • http://netkiller.github.io/ Neo Chan

    I’m been working with CodeIgniter since 2007.

  • iansltx

    Glad to see Phalcon getting some love. I’ll be the first to admit I’m not a framework purist…the (real, live, in production) Phalcon project I’m working on takes some of its components and bundles them up quite differently than its standard framework distribution (for example, we don’t use the ORM…just the raw DB adapters). But I’ll echo others’ contentions that it does a lot of things right, and it does those things speedily.

    I’m really curious to see how much faster this project would be if Phalcon got re-implemented in an HHVM-compatible way (with the same API). Now *that* would be sizzling (the project, which is just a back-end API, has quite a bit of code in PHP-land).

    I say this having used Symfony2 extensively (also on real-world, in-production projects), as well as CodeIgniter and a micro-framework or two (Limonade comes to mind). I haven’t used Laravel, but know a bit about it…and of course I’ve used Composer and Symfony2 so I understand some of the components thereof pretty darned well.

    EDIT: I also support the “don’t just know one language” bit. If you’re good at more than one language, you can take lessons learned from one and apply to the other. I find this to be the case when I bounce between JS and PHP (I prefer PHP, but callbacks and closures are handy); wider perspectives make for better solutions, as long as they don’t come at the expense of being an inch deep and a mile wide.

    • http://www.bitfalls.com/ Bruno Skvorc

      Thank you for the excellent feedback, agreed on all counts

  • kjarli

    Laravel makes me puke. Seeing how many people like it makes me puke even more. It’s a disgusting framework that uses static calls more than you should ever take for granted. Burn it down and learn a proper way of coding – or as far as you can in php ;)

    • doe_ro

      Laravel 4 doesn’t use static anymore.

  • http://www.bitfalls.com/ Bruno Skvorc

    No, it was over 100 after filtering. Still, you’re right, not an impressive sample size. Hoping to do better next time. The comments themselves are what’s valuable though. What is your current preferred framework?

    • Atutorme

      First was CodeIgniter, now Yii.
      It’s too much of a hassle learning a new framework every few months :-(

      PS Thanks for the article though :-)

      • http://www.bitfalls.com/ Bruno Skvorc

        Oh it was never CodeIgniter, you were just led to believe it was ;) What’s popular isn’t always best – the most popular stuff is usually the most newbie friendly, which often has no actual connection to how good it is.

        • Atutorme

          LOL! thanks @brunoskvorc:disqus

  • AndrewEddie

    Bruno, is it possible to include the number of people that took part in the survey (it’s important to know if the results are from 10 developers or 1000) and the raw results before you discarded (because what you discard may still provide some insight). Also, it would be useful to recap what you actually asked. Thanks in advance.

    • http://www.bitfalls.com/ Bruno Skvorc

      107 valid responses in the end. Like I said in the other comments, the data would be too difficult to make public as I’d have to go and remove private data from each entry, plus it’s been butchered too much. Stay tuned though, new developments regarding this area will be going online soon with full details and insight.