share
Stack OverflowWhat PHP framework would you choose for a new application and why?
[+270] [92] happyappa
[2008-08-05 18:16:08]
[ php web-development scripting frameworks serverside ]
[ http://stackoverflow.com/questions/2648] [DELETED]

Over the course of your web development experience, what PHP framework(s) have you worked with? What strengths and weaknesses have you observed in those frameworks? Considering these, what framework would you recommend if beginning a new application?

(13) I've never understood... why would you use a framework instead typing in pure php? Or am I missing something big? - stalepretzel
I vote for all those who answered cakephp, but really this question has been asked hundreds of times on stack overflow. - jimiyash
(17) Thank you all. As a 'duct tape programmer', this is how I chose my framework: I read all the answers here, and wrote a list of all the frameworks mentioned here, most of them never heard of them before. Then I gave a point for each positive mention, and subtracted a point for negative mentions. After 1 hour I have chosen codeigniter without knowing anything about it. Thanks for sharing. - BeMeCollective
The question always has a net result of receiving the same answers with a similar pattern of votes. It's not so much the framework you chose, but how you chose to abuse it. I personally enjoy using Kohana sprinkled with some Zend modules as you get the benefits of rapid development in Kohana with all of the Zend goodies. Let's be honest, Zend is not the friendliest MVC framework to setup and using models is nothing short of a pain. - cballou
(65) I must say I'm shocked by all the answers given that don't first ask "What kind of application are trying to write?" I guess all PHP frameworks are equally good at all application types. Good to know. - jmucchiello
(8) Since the questioner did not specify an application type it's reasonable to suggest a general purpose solution. It's definitely not helpful to answer a question with a question. - pbreitenbach
@stalepretzel You are missing something big!!! Do you always write your own MVC, propel/doctrine, ... I recommend you start using it quite fast!!!! - Kennethvr
@kennethvr MVCs can be a huge pain. Its why I stick with library function sets anymore.. see: stackoverflow.com/q/3415940/215170 - Talvi Watia
@Talvi Watia: The link you gave hardly points to function sets as a better approach to web dev than MVC frameworks are. What the user who asked the question was trying to do was just complicated, but for no reason should his question have a negative impact on MVC frameworks, IMO. - AntonioCS
(4) What kind of application are trying to write? - Enrico Pallazzo
Best thing is to take a look into what you need and get a good look at the community of the different frameworks. There's a good chance at least one of them offers some ready to go packages in the form of plugins. I decided to write my own Framework a couple of months ago and I must say: I love it! Not sure why I did it, but in some way I find it easier to get a hang to compared to the frameworks around, even tho my choice took me a hell lot of time to get as far as I am now. - PENDO
and afterall it's just a mather of personal taste what works the best for you.. endless discussion. - PENDO
@stalepretzel Trust me. If you have a deadline you DON'T want to write in pure PHP. - Rushino
[+135] [2008-08-06 09:53:55] grom [ACCEPTED]

Kohana [1] is similar to Code Igniter but is a PHP 5 only framework so its a bit cleaner to use.

UPDATE: As of Version 2.0.0 released January 28, 2011, PHP 4 support is removed. CodeIgniter [2] now requires PHP 5.1.6 (and is a bit cleaner to use).

[1] http://kohanaphp.com/
[2] http://codeigniter.com/user_guide/changelog.html

(10) Requirements say it needs PHP version >= 5.2.3. This isn't a very good idea. The last stable release of Debian only has 5.2.0. - stesch
(5) Great tip! I used to like CI, but Kohana is really an improvement! Thanks! - Vadim Ferderer
(11) Debian 5.0 (released February 14, 2009) includes PHP 5.2.6, so Kohana works great! - Christian Davén
(4) Kohana is simple and seem good for a small custom website. For larger websites it's too "light" as it lacks of important features development like Unit Tests / Web tests (with environments & DB fixtures), forms (which are currently too basic), URL routing (with reverse) - Wernight
(1) @Wernight Unit testing does not really have to be integrated in a framework. Reverse url routing is added to Ko3 - Ikke
@Ikke I was join comparing with other frameworks for a production usage, but thanks for pointing out the reverse addition. - Wernight
(24) Just because debian keeps ancient versions alive for a long time it's not a good reason not to use something... - ThiefMaster
(1) How can you go for this framework, when their official site shows exceptions and "help, it does not work" when browsing documentation ? :D - Johannes
@Johannes if you look closely the page works just fine. It's the page title for people that can't get kohana to work. - RJD22
kohana is sketchy. "shadowhand" aka "benevolent dictator of life" title makes me feel uneasy. I definately wouldn't recommend this to business clients. - Andre
1
[+109] [2008-08-12 12:00:50] AdamTheHutt

Symfony

Surprised no one has suggested symfony [1] yet. It's quite mature and has a large developer community, lots of plugins, etc. It's also starting to get used by the likes of Yahoo! [2].

[1] http://www.symfony-project.org
[2] http://www.symfony-project.org/blog/2006/10/28/yahoo-bookmarks-uses-symfony

(14) After reviewing many alternatives I decided to go with Symfony and it has been a dream ever since. It's the first project that if I was given a chance to start over clean I probably wouldn't change anything non-trivial about how did the project. - donut
(4) If you're looking for a job, there are way more offers for symfony than other PHP frameworks nowadays - Wernight
(1) dailymotion.com is built with symfony (it's a french youtube, world 2nd in the category) - Maxime ARNSTAMM
(3) I built a complex accrual engine with several ajax interactions on Symfony. It took about two months to reach the tipping point of familiarity with the framework. Once I 'got it' my mind could easily focus on functionality and features while Symfony provided easy code manipulation. - Christopher Altman
(4) I researched extensively on php frameworks, and I have no doubt: I recommend Symfony - Paulocoghi
Symfony is nice but it's API documentation is pretty empty in a lot of places. Hopefully the documentation is more thorough when 2.0 gets outta beta. - Jakobud
2
[+71] [2008-08-05 19:49:30] Steve Tranby

I have used Code Igniter [1] and it is a very slick and lean MVC framework. It is definitely a great option if you are building a custom application. Basically most of the plumbing and redundant work is ready for you to use, and you can concentrate on the look and feel along with the business logic. It does have a bit of a learning curve (similar to CakePHP [2]), however.

You might want to first quickly test out Drupal [3], or Joomla [4] (among others) that offer a fully setup and ready with little customization IF they have what you need. These giant frameworks are tough to customize, and they are mainly setup for Content Management applications.

[1] http://www.codeigniter.com/
[2] http://www.cakephp.org/
[3] http://www.drupal.org/
[4] http://www.joomla.org/

(11) I would argue codeigniter has far less of a learning curve than most other PHP frameworks I tried - it didn't enforce much on you, once you get over the URL -> a class, then a function named "index", it's quite simple, and more "PHPy" than I found other frameworks (that tried to be Ruby on Rails) - dbr
You make a good point, however the learning curve I was speaking of is in reference to learning how to make the framework do as you need. I agree that it is not that difficult, and I think the MVC style url mapping is going to be the future of web apps and services. So it's something good to learn. - Steve Tranby
(9) You can also look at Kohana, a rebuild of CI. It manages some things slight different to CI. - Ikke
(19) Codeigniter's documentation is top notch. It makes learning and building with CI a joy. - Cory House
(2) About Drupal as a PHP framework: it's very heavy on the server and I would not suggest it unless you are planning to use it's large module library in some way. Interesting enough, first drafts for Drupal 8 state that some energy will be dedicated to separate between "Drupal the framework" and "Drupal the CMS"... it might be worth keeping an eye on it. - mac
(2) +1 for CI, quick learning curve, excellent documentation, active community. - Iraklis
3
[+66] [2008-08-05 18:41:08] bcwood

CakePHP [1] has been my top choice for a while now. It's very simple to get started with, and allows for rapid development, following a similar model to Ruby on Rails.

[1] http://www.cakephp.org/

yup. RoR developers love CakePHP :) - codingbear
Cakephp Rocks :D - Harsha M V
Yup cakephp is probabaly the best unless you have a high traffic application but there too you can optimize the framework - Web Developer
4
[+52] [2008-08-05 18:29:42] Flubba

Well, we've been using Zend Framework on a private project for a few months, and it's been pretty painful. We also use it at work, and it's pretty painful there too. It's one to consider if you're starting on a project, but it's not stable and probably won't be for some time to come. I think Zend have managed it pretty badly; at one crucial point the docs were version 1.5 but the current version was still 1.0 and I wasted a lot of time trying to get it to do what it said it did in the docs.

The MVC is implemented in an OK fashion, but the absence of good tutorials was a terrible drawback when we were learning it back in Spring 2008. I believe most of any application should be in the model, and in ZF at the time this was given no coverage whatsoever.

I think it will need another year to be stable enough to live with, and I think it will probably become something of a standard once they've gotten it a bit more mature. Although it's from Zend, it's very much an ad-hoc community project with not enough centralised control, as far as I can see. And for the last year or so I'd say it's suffered as a result. I really wish we hadn't used it on the private project. At work, it's more of a long term thing and so it will probably pay off eventually.

The good thing about ZF is that you don't need to use the whole thing - for instance, you can start using the RSS functions or any other module with an existing application perfectly happily. You can use the MVC stuff or not. That flexibility is very valuable. The question is again whether the quality of the individual bits is there yet; my colleague really struggled with their ACL architecture, for example, but the RSS stuff is fine.

I've been pretty impressed with what I've seen of CakePHP, but haven't used it. I would probably give it a go on a new project; it's based on similar principles to Rails and has some nice design principles.


(10) I'm pretty impressed that you did not manage to find any good tutorials. There are tons and tons. - Till
Having used only CakePHP (so grains of salt are there-> *), the MVC formulation is opposite to yours, and close to what you mention you found: the application logic is in the controllers, and the Models just link them to the database. - Adriano Varoli Piazza
@Till "There are tons and tons" Feel free to link to them! This was back in January-March 2008 - Flubba
(6) Zend Framework Quickstart: framework.zend.com/docs/quickstart Zend Framework Tutorial: akrabat.com/zend-framework-tutorial Build your own Blog in Zend: blog.astrumfutura.com/archives/… - John Fiala
I agree that ZF does give the best out of all PHP frameworks; however, in case of inexperienced (as in not experienced in php frameworks or other web development frameworks) developer, I would suggest CakePHP because it is easier to start and grasp the core concepts. - codingbear
I don't know if cakephp is a good choose yet, because the creator of PHP(rasmsus) did some benchmarks on cakephp a while back and it was slow as a snail back then). Codeigniter was pretty fast. - Alfred
Although there's a steep learning curve, ZF has standardised so much functionality it's well worth diving in. Once you get over the hump, deployment is at lightspeed sisnetti.com.br/index.php/Zend-Framework/Quick-Start-English slideshare.net/ZendCon/zendtool-practical-use-and-extending devzone.zend.com/tag/ZendCon%20Sessions - Andy
(5) I'm an avid Zend Framework user both for work and personal projects. I like the framwork, but I agree that the tutorials are really lacking and that the framework changes so fast, that the tutorials are usually out of date. ZendCasts has done the best job of explaining Zend in my experience. The loosely coupling of the objects makes Zend more powerful than a lot of other frameworks in my mind. I would say it's not a framework for beginners, unless it's setup and explained by someone with experience. - AndreLiem
Zend have just rewritten their docs, and provided a tutorials area framework.zend.com/manual/1.10/en/learning.html - another good intro here slideshare.net/bradley.holt/zend-framework-introduction - Andy
(1) I vote for Zend Framework, no doubt about it. I had experience with CodeIgniter and Kohana to. Im using Kohana for small projects. For everithing else Zend. The only thing is as mentioned .. the documentation, is absolute lobotomy, but it is worth of effort to learn it. - Dr Casper Black
(2) I tried picking up Zend. As a newer programmer I found the documentation as bad as others mentioned. Totally painful and non-functional...you can read 5 different Zend Framework introductions and find get 6 different initial configuration suggestions. I abandoned it for the time being and might pick it up again as the framework looks very robust, but the learning curve and initial documentation is treacherous. - dscher
(1) The reason why there is a bunch of different configuration suggestions is because there is a bunch of different configurations that can be had. Which IMHO makes ZF the best. They don't force you to do it one way. The result of this is that you are forced to learn what is going on and it's not just "magic" - like some of the others. - sims
5
[+31] [2008-08-05 18:31:48] dragonmantank

Zend Framework [1] is my choice for MVC-based applications. It doesn't force you to use any specific setup for your application but gives you guidelines that are easy to work with. Zend Framework also is an 'at-will' framework so if you don't want to use everything you don't have to.

I did a full write-up here [2] on why I really enjoy using it.

[1] http://framework.zend.com
[2] http://blogs.tankersleywebsolutions.com/2008/05/13/zend-framework-and-why-it-matters/

6
[+31] [2009-03-04 17:35:29] ryeguy

I use CodeIgniter and recommend it heavily as it is very lightweight and fast.

However, there is a newcomer on the block (just a couple months ago) that is even faster and more lightweight then CodeIgniter. It's called Yii [1] and it's made by the guy who made the Prado framework. Check out this benchmark:

I haven't actually used it yet, but it looks very promising.

[1] http://www.yiiframework.com/

(33) wth do those bars actually represent? how do we know this is even a fair comparison? are these numbers even insignificant, or are we talking nano-seconds on some rarely used feature? - Mark
(3) Here is an explanation for the performance chart: yiiframework.com/performance - James Skidmore
Also it is out of date. Symfony 1.2 is obselete. 1.4 is standard and 2.0 is close to being available. CodeIgniter 2.0 too is close to being available - Jon Winstanley
(2) Most of these benchmarks are stupid anyway. Yii might have full-page caching enabled by default. - The Pixel Developer
I used Yii for some projects and what can I say is that it runs really fast (I can compare it to ZF which is really slow in comparison). It's really nice written and well documented, the author has published a free ebook and generally speaking documentation is excellent, it even includes best mvc practices chapter and few screencasts. If also features a really useful CLI (lately even GUI) generator which helps to generate CRUD. Although it doesn't incorporate PHP 5.3 features, it's one of the best tools I ever used and I can highly recommend it. - mailo
@The Pixel Developer: the mentioned benchmark is not stupid. Author explains that it measures framework overhead for "Hello world" apps. It proves that Yii has nice lazy initialization capabilities. - amartynov
RPS and APC need expansion. This is why I hate acronyms. - Tchalvak
RPS = Requests per second, APC = Alternative PHP Cache - Lumpy
7
[+28] [2008-08-12 12:30:27] BlaM

I'm very hesitant when it comes to using existing frameworks, because all frameworks that I checked use tons and tons of includes and you don't have control over which include is done when. The problem with that is, that includes are processes on your hard disk, i.e. they are slow - so you should try to have as few as possible.

Just looking at the MVC implementation in Zend gives me a headache. So you include "Zend/Controller/Front.php" and "Zend/Controller/Action.php". Not too bad so far. Hovever "Front.php" includes another 8 files and "Action.php" includes another 2 (plus 3 that are already in Front.php, so they don't really count). To make it short: You end up with about 20 includes before the application even started - and only using MVC. This number will still go up when you decide to use Zend_Db or anything else. Even if you use an opcode cache the system still needs to check if those files have been updated since when they have been cached...

Ergo:

  • If I HAVE to use an existing, well known framework, I'd choose ZEND or CodeIgniter
  • Otherwise I prefer to use my own MVC framework, which is a lot slimmer.
  • There usually are very good specialized "stand alone librarys" for almost every functionality included in Frameworks (Mailer, RSS, ...). In most cases they are even much better in what they do than the "general" framework implementations.

(8) Actually, if you're using APC as an opcode cache, in production you should concider setting apc.stat to 0, which will prevent it from checking for updates to the files. If you update files, you can use apc_clear_cache() to flush out file caches. - Rexxars
(3) And use absolute paths, so no stat calls are made. - Itay Moav
Zend is a joke when it comes to file includes. In magento, everything on your page is divided in 'blocks' and each block goes in its own file. So to display this page in Magento you would need at least 10-20 included files/'blocks'. And i'm talking abt only the view files here, not the code files - Click Upvote
+1 @rexxars - APC with stat=0 is great for frameworks that have lots of includes. - Cody Caughlan
includes are a problem for Zend. It should be developed so that this issue is fixed. I think that's an effect of the way Zend is loosely coupled. - AndreLiem
(3) Many includes is not a problem. The time it takes to do those is dwarfed by the time it takes to do 1 SQL query. - Bart van Heukelom
8
[+26] [2008-09-02 19:46:43] Kevin Kaske

If it's php... It's got to be CodeIgniter [1]!

It's lightweight, Fast, and so easy to pick up and run with. It has great documentation! All of this pales in comparison to the amazing community that has formed around CI. I have never seen attitude on their forums (and I have posted some dumb questions). Not only are they nice but they has some very bright people writing and using CI.

If I have a choice I go with Ruby on Rails.

[1] http://codeigniter.com/

(3) Lightweight is not always what people want. Symfony has a lot more features and is more robust. - Jon Winstanley
9
[+22] [2008-08-05 20:37:52] Jake McGraw

I've used Zend Framework with much success over the last 6 months, I have only worked with the 1.5.* line, so I haven't experienced any of the negatives brought up by @Flubba. I enjoy using Zend for several reasons:

  1. MVC right out of the box, create the document structure [1] and the bootstrap [2] file and you're pretty much good to go.

  2. A very robust library, a whole slew of classes have been created to provide an OO interface for most of the commonly used functions in PHP.

  3. Why use Zend Framework? [3]

[1] http://framework.zend.com/manual/en/zend.controller.html#zend.controller.quickstart.go.directory
[2] http://framework.zend.com/manual/en/zend.controller.html#zend.controller.quickstart.go.bootstrap
[3] http://framework.zend.com/whyzf/overview

jakemcgraw, how do you implement page navigation within the Zend Framework? Like a classic horizontal nav (Home - Stuff - About) where the current page is highlighted (like class="active" added to it, for example). How does ZF handle such a common display element? - gaoshan88
@gaoshan88 Checkout Zend_Navigation bit.ly/zf_nav and Zend_View_Helper_Navigation bit.ly/zf_view_nav - Jake McGraw
10
[+20] [2008-10-10 02:26:56] leek

Read some comparisons by others:

Personally, I've only ever used CodeIgniter and Zend Framework. CodeIgniter I quit with after 2-3 days because I wasn't pleased. Zend Framework I have been pleasantly surprised with so far. Although, it did take a little code digging to finally get it to all fit together the way I wanted. All of the flexibility of ZF really hinders a newcomer.

[1] http://snook.ca/archives/php/codeigniter_vs_cakephp/
[2] http://blog.ekini.net/2008/01/25/a-very-quick-zend-framework-vs-code-igniter-comparison/
[3] http://www.avnetlabs.com/php/php-frameworks-revisited-codeigniter-vs-zend-framework
[4] http://www.devtrench.com/codeigniter-vs-symfony/
[5] http://thesocialbazaar.com/2008/03/01/codeigniter-versus-zend-versus-symfony-at-the-php-conference/

11
[+17] [2010-02-04 18:30:02] Jakobud

CodeIgniter

After toying with several frameworks, I finally landed on CodeIgniter [1]. I'm going to quote this from their website, because it is very accurate:

CodeIgniter is right for you if:

  • You want a framework with a small footprint.
  • You need exceptional performance.
  • You need broad compatibility with standard hosting accounts that run a variety of PHP versions and configurations.
  • You want a framework that requires nearly zero configuration.
  • You want a framework that does not require you to use the command line.
  • You want a framework that does not require you to adhere to restrictive coding rules.
  • You are not interested in large-scale monolithic libraries like PEAR.
  • You do not want to be forced to learn a templating language (although a template parser is optionally available if you desire one).
  • You eschew complexity, favoring simple solutions.
  • You need clear, thorough documentation.

A couple of things I'm gonna re-iterate:

  • DEAD simple to install. Just drag-n-drop. No configuration necessary.
  • Great User Guide on their site
  • Simple and straightforward MVC setup
  • Very fast and not bloated in any way
  • The database classes Active Record stuff is awesome
  • Easy to expand with custom classes and helpers

I first started messing with ZendFramework cause I heard it was so great. But wow.. getting that thing installed was a royal pain. Maybe on certain servers out there its very simple, depending on how PHP is setup. But on the particular server I was working with (a stanard hostmonster web server) it was horribly difficult.

I also tried going the PEAR and CakePHP route, but PEAR was just too monolithic and CodeIgniter just seemed better/easier/faster than Cake.

[1] http://www.codeigniter

I am very happy with the PEAR power and will definitely look at other more robust options in the future. - shantanuo
I agree with this. CodeIgniter has been my choice for MVC framework for PHP. it made it simple for me to understand the concept of MVC framework. - trace
12
[+16] [2008-08-06 08:48:08] deceze

I recently build a complete admin interface for a shopping system with CakePHP in under three days, it was amazing. If your project is right up Cakes alley it's a dream to work with. Takes a while to get used to though, I tore my hair out for two weeks* on the first project I used Cake for before starting to get the hang of it.

*) Back in 1.1 days when documentation was sparse, the situation now is a lot better I think.


"If your project is right up Cakes alley it's a dream to work with." But if it's not, you'll be pulling out your hair trying to get Cake to do what you want. I find this in many frameworks, which is why I've made own. I shall not link it, or this will be classified as advertising spam. - Bart van Heukelom
13
[+16] [2008-08-26 13:53:39] wizard

CakePHP [1] as well as being a wonderful MVC framework has a wonderful console. You can write scripts for cron to run or even interactive scripts for users to run in the command line that can use any model or controller you app can. You don't have to do any kludging of having a cron.php tied to a scheduled wget, or shafting the first person to visit your site after midnight with a long background process.

I've used it to generate thumbnails on large images, clean up the db, archive old items, and expire things that need expiring. It's simple and fits with the mvc cleanly. Though I might call this feature model/console/controller.

[1] http://www.cakephp.org

That is not incredibly hard to make though. Just set up your application environment (database and stuff) in a common bootstrap file. - Bart van Heukelom
14
[+15] [2008-09-17 18:06:07] tyshock

I've used CakePHP and QCodo for my PHP development. I've also evaluated CodeIgniter. All three have their strengths and weaknesses.

If you're a beginner to programming, then I'd recommend CodeIgniter. In my evaluation, I was pleased with their user community. I read several testimonials of beginning developers who were able to rapidly learn the framework. I'm not a big fan of CodeIgniter's data access layer. It is much better than writing raw SQL, but it lacks the simplicity of the ActiveRecord pattern IMO. On the plus side, CodeIgniter has a much smaller footprint than CakePhp. If performance is a concern, that should be taken into consideration.

If you're at all familiar with Rails, then CakePHP should be any easy win since Cake was actually started as a php version of Rails, but has since moved down it's own path. It has out-of-the-box active-record like ORM and basic code generations for your data models. The drawback of Cake is that it's documentation is lacking, and the amount of features crammed in can be overwhelming, especially at first.

QCodo is an event-driven framework that excels at code generation/scaffolding. If you are familiar with ASP.net webforms, windows forms development, or swing development, you'll catch on to QCodo's event-driven structure. Also, if your site is more of an internal use site and/or you want to have lots of auto generated forms and grids, then QCodo is the answer. However, it is probably the toughest when it comes to customizing the look and feel of your website due to the reliance on that code generation.


(2) Here's a vote against Qcodo. - leek
15
[+13] [2009-05-17 05:14:31] X-Istence

As a follow-up to Flubba [1], I just wanted to point out that the Zend Framework has matured a lot since 1.5/1.0 (Docs and Framework itself), the current version is 1.8.1 and is an absolute blast to work with. I was able to get version 1.8.1 up and running within minutes and had a project going with the template I wanted and the various bits and pieces within the first day. The second day I started playing with Zend_Form [2] to create new forms and to have them output as well as using the validators to make sure we got valid data and then using Zend_Mail [3] to send emails with attachments to satisfy project goals.

Had I instead done this all by hand using standard PHP it would have taken me much longer, and would have made it harder to keep up with the changing and moving goals for the project (my boss keeps wanting new things after seeing how fast I added what he previously wanted).

There are also plenty of tutorials out there now using Zend Framework and showing the various powerful features, the Zend Frameowrk Quickstart [4] is a fairly good starting point, it is the one I used to get started, from there reading the documentation is fairly easy.

The documentation is easy to follow, contains many concrete examples on how to accomplish various tasks, but at the same time there is a lot of flexibility in how to use the various components and that choice is left up to the programmer.

Tutorials:
Rob Allen: Tutorial: Getting Started with the Zend Framework 1.8 [5]
Maugrim The Reaper's Blog: Example Zend Framework Blog Application Tutorial: Parts 1-8 Revisited [6]

Starters:
Damien Mathieu: A skeleton to build a Zend Framework application as DRY as possible [7]

Zend Framework has come a long way from the previous versions, you are still able to pick and choose from most of the available "classes" and use them stand-alone but it is becoming a very viable framework to start off development with on new projects. It is becoming a full featured web framework that can stand up next to Cake PHP [8], Symfony [9], CodeIgniter [10] and the many others that exist!

Zend Framework, while still one of the younger frameworks for PHP out there has some awesome potential, it is quick moving and bug fixes are being put into the framework almost daily. I recently had an issue with how modules were being bootstrapped and after reading through the bug reports I noticed that they had released a new version that day to fix those exact bugs I had been seeing!

[1] http://stackoverflow.com/questions/2648/what-php-framework-would-you-choose-for-a-new-application-and-why/2659#2659
[2] http://framework.zend.com/manual/en/zend.form.html
[3] http://framework.zend.com/manual/en/zend.mail.html
[4] http://framework.zend.com/docs/quickstart
[5] http://akrabat.com/zend-framework-tutorial/
[6] http://blog.astrumfutura.com/archives/367-Example-Zend-Framework-Blog-Application-Tutorial-Parts-1-8-Revisited.html
[7] http://github.com/dmathieu/zendry/tree/master
[8] http://cakephp.org/
[9] http://www.symfony-project.org/
[10] http://codeigniter.com/

16
[+10] [2010-01-23 13:11:09] PurplePilot

No one seems to have mentioned the different types of framework as in Full Stack versus Glue. Without duplicating the excellent material already posted.

Glue frameworks such as CI, Kohana and Zend allow you to pick the parts you want and leave out the ones you don't. Not just the helpers but in CI/Kohana you can leave out say the Model part of the pattern.

However with the likes of Symfony and Cake you have to implement the whole shooting match the framework designers way without the option.

Neither approach is correct or incorrect an there are situations where you would use Glue over Full stack and vice versa.

There may well be arguments over what is defined as Glue or FS.

The real choice comes down to what the end result is going to be and how you make the journey and selecting the right tool for the journey. That will usually involve getting it wrong a few times.


You are correct on the part where you say that Symfony has to be installed completely. There are a huge pile of plugins available these days to add features to your Symfony framework. The basics should be inserted from the beginning if you want to use a framework, I don't see the advantage of leaving out the MVC from the beginning... it's the purpose of a framework to not reinvent the wheel each time you start a new project... which one is better is a peronal choice.... - Kennethvr
+1 A nice different answer. - Sandeepan Nath
17
[+10] [2008-08-12 12:03:24] Thomas Owens

My only experience is with CodeIgniter and it's fork, Kohana, I think that's how it's called. I'm happy with the way those function. However, depending on the application, a framework might become an overkill and it might just be better to use PHP and PEAR libraries without any fancy frameworks.


agreed. It can be more effective to cook up your own solution with the assistance of packages from PEAR/ezComponents/Zend/whatever - it just depends on the project requirements. - kguest
18
[+9] [2008-08-05 18:24:45] Vaibhav

CakePHP if we are going to make anything more than a simple website. It's MVC architecture alone makes it a good choice.

Zend is a good second option because all the built-in libraries.


19
[+9] [2008-09-04 11:16:57] Alexander Morland

(bah where did my post go?)

You should use CakePHP [1] because it's going to be the fastest, easiest and funnest build you ever made.

Since there is a few people that mention the zend framework, it should be said that you can have your cake and eat it to [2]. That's right, you can use the zend libraries as vendors in cake with little issues. In fact many people claim that while cake is a true framework, zend is just a set of libraries. Let's not get into that discussiom, but my vote is definitivly Cake.

Happy baking.

[1] http://cakephp.org
[2] http://bakery.cakephp.org/articles/view/integrating-zend-framework-lucene-with-your-cake-application

20
[+8] [2008-08-30 20:02:01] Jamey

I think Symfony is an excellent choice. It has EXCELLENT documentation and is very intutive to learn. Built-in AJAX helpers, among many other helpful libraries make it easy to build a feature-rich web application QUICKLY.

Check out the Askeet! [1] tutorial to see how you can build a Stackoverflow-like application in 24 1-hour lessons.

[1] http://www.symfony-project.org/askeet/1_0/en/

21
[+7] [2008-09-11 03:19:47] user5710

When project requirements specify PHP, I use CakePHP.

One drawback is that Cake model finders return nested arrays instead of actual model objects. While this keeps the overhead low, the structure and index/keys for the data in the array can change depending if was part of an association, etc. This can be a problem when passing data from different finder calls to the same view. Also, being an array, you can't call business logic on results or use lazy loading to pull more information from the database.

Otherwise, it's a great framework.


22
[+7] [2008-08-29 18:03:57] beaudetious

Do you have to absolutely use a PHP-based framework? If not, consider Ruby on Rails in your analsysis. My team has decided that any future work will be on Rails since our current ORM is homebaked and sucks extremely bad. We were thinking of using symfony otherwise.

Good luck,

beaudetious


+1 After looking at all of the PHP frameworks a while ago, I settled on RoR and haven't looked back. If you care enough about code quality that you want a framework, PHP might not be the language for you. - Tobias Cohen
23
[+7] [2008-08-22 21:29:05] ahc

If you want something that is consistent, well written, has strong conceptual integrity and has no external dependencies, you should try Solar [1]. It's very clean, simple and easy to extend.

One of the main reasons why I love it so much is that it allows me to re-use almost everything I write, from templates to complete applications.

[1] http://solarphp.com

24
[+7] [2008-08-10 19:24:10] ejunker

@Flubba there are several good Zend Framework tutorials and there are also several Zend Framework books due to be released soon.

[1] http://akrabat.com/zend-framework-tutorial/
[2] http://www.zftutorials.com/

25
[+6] [2008-08-05 18:27:46] TiTi

I think it depends on the kind of application you want to produce... As far as I am concerned, I prefer to deal with low level api such as TinyButStrong template engine [1].

Does anyone knows a place where frameworks are compared and where their weaknesses are detailed?

[1] http://www.tinybutstrong.com/

26
[+6] [2008-09-15 21:23:45] William OConnor - csevb10

I think you're going to find that most people prefer the environment they work in most frequently. All of the major frameworks have something to recommend them otherwise they probably would have fallen by the wayside.

I'd recommend Drupal (it being what I'm used to) for the mass of contributed modules and out-of-the-box functionality. Drupal makes a lot of useful tasks easy that should be able to give you a site without a great deal of development effort. CakePHP is a decent choice as well if you are building from scratch, but I'm a fan of Drupal's modular architecture and built in functionality. I'd recommend against Joomla as a developer because I don't particularly care for their separation of code and display (or lack thereof in many cases) and the relative complexity of certain tasks-meaningful clean urls-compared with Drupal.

I'd also recommend against combining the frameworks for the most part because your PHP process can grow out of hand making it harder for you to handle a decent traffic load.

In the end, the choice is going to come down to preference, and I'd at least taste a couple before settling on a final choice. Figure out what seems right to you, learn the conventions and paradigms of the framework and stick to them, and you'll probably be happy.


27
[+6] [2008-09-11 02:51:21] Rushi

Symfony is a excellent framework, but it is a bit complex and quite deep. If you want something basic and simple take a look at Code Igniter http://codeigniter.com [1]

[1] http://codeigniter.com/

28
[+5] [2008-08-25 03:34:32] Bob Somers

Depending on whether your need a heavyweight solution or a lightweight tool, you might check out CoughPHP [1] (and ORM framework for your model) and LightVC [2] (for your view/controller framework).

[1] http://coughphp.com/
[2] http://lightvc.org/

29
[+4] [2008-08-17 23:53:04] Boofus McGoofus

I've really never felt comfortable with CakePHP or similar tools. I really like Qcodo. It feels nice and clean and building the "gui" seems more like building the interface in Delphi or Visual Studio.


30
[+4] [2010-01-23 12:29:03] Aziz Light

I've been using CodeIgniter for since August 2009 and I absolutely love it. It's easy to learn, the source code, even though a lot of it is still in PHP 4, is very clean and very well written, the documentation is really good, straightforward and easy to navigate, the community is amazing. I would definitely suggest that as a first PHP framework.

Before CodeIgniter I had tried CakePHP. Although it has a nice command-line tool, it a lot harder to learn and the documentation is not nearly as good as the CodeIgniter's one. Also CakePHP's performance is really lacking, applications you create with it end up being really slow. All in all I really think CakePHP is really bloated and it would be much better if it was a bit more modular.

Recently I also tried Recess and Yii. My first impression is that they're really interesting but I haven't used them enough to talk about them extensively.


31
[+4] [2009-03-07 07:55:25] devinfoley

It would depend on the requirements of the application, of course. But I think the answer you are looking for is...CakePHP. I love it. I get my work done in 1/4th the time, I end up writing less code, and the code that I do write is better organized and more manageable. Also the documentation and support in the IRC channel is top notch.

Zend has been trying to sell me their technology for 10 years now, and it still hasn't caught on...

Symfony is supposed to be good, but I haven't checked it out.

CodeIgniter does not have all the features of CakePHP. It is faster than CakePHP in tests, but I'd rather just build my applications to scale linearly and throw more servers at it than spend my time writing code.

Drupal is a CMS, not an application framework. If you try to develop an application with Drupal, prepare for pain.


32
[+3] [2009-04-12 06:34:46] lego

CakePHP - fast development time (and I mean REALLY fast), simplicity, convention over configuration, Rails similarity, decent performance (with cache), ajax inegration (with Prototype - but you can easily switch to jQuery which I prefer), unit testing out of the box, authorization and authentication built in and many more. Zend on the other hand tries to be more "enterprisy" but fails :)

Well it all depends on what application you're writing, ZF is more flexible but for majority of tasks (CRUD like applications, web2.0 sites etc) Cake is better.

But if you have choice of another programming language I encourage you to try out Ruby (and Rails for webdev) - it's even better then Cake.


33
[+3] [2008-12-22 18:04:47] Travis Leleu

I recently made the jump into PHP Frameworks myself. After speaking with proponents (and sometimes authors) of each at conferences/ via email, here's how it seems to boil down:

  • The big 3 (Zend, CakePHP, and symfony) all seem to have the most complete feature sets. Zend seems to be the most powerful (they have some unique modules), and it's designed to allow you to plug singular modules in as you need. Zend also offers training in it, as well -- might be a good thing for developers whose companies will pay. CakePHP is the most rails-like, and (for me), it allows you to create a decent UI really really fast. Symfony seems to be pretty fast, and has the best documentation.

I haven't tried out the other frameworks, as they are supposed to be less "true" MVC. In exchange, they benchmark a lot faster. So, if speed is a big deal, try CI or one of the other leaner frameworks (but realize that they are less feature-rich). Personally, I don't worry too much about speed, since I've got recent dedicated servers to run sites that never serve more than a few dozen people at a time.

So, in evaluating these frameworks, I'd suggest you determine what you need. If you want speed, use CI. Fastest development (and rails-like simplicity), try Cake. Documentation? Symfony. Professional training? Zend.

Hope this helps! You can't do wrong with any of these, really -- I was amazed at how quickly I could turn stuff around using CakePHP (although now it begs me to add unit tests, etc., which increases dev time, but gives you better reliability.)


34
[+3] [2008-12-24 00:24:55] Jamie Rumbelow

$CodeIgniter++; It's fast, lightweight and makes your workflow sooo much easier.


35
[+3] [2009-12-15 11:25:38] Thang Nguyen

In my opinion, Zend Framework is the best one. It's well constructed and encourage you to use best practice to make your project more professional. It also have a emerging community which will help you every concerned issues.


36
[+3] [2008-09-17 06:22:37] community_owned

I'll put in another vote for Zend Framework. I have been using it for about 6 months and have been very happy with the way it all fits together. My biggest issues has been the lack of clear cut instructions and resources but given time and this should be sorted out.


37
[+3] [2010-03-01 19:11:04] Sumit Ghosh

I have only worked with Cake and Zend so far, but I out rate Zend much better than Cake , Zend gives you the true power of OOPs in PHP and it also gives you MVC using actual true classes in php 5.3 unlike cake which is built in php 4.

My 10 points for Zend..


38
[+3] [2010-12-02 20:35:45] Chris

I like Yii :) or CakePHP... Zend Framework if you have a big enough team with developers


39
[+3] [2011-01-10 03:21:55] user550178

I believe the framework for each project depends on the scope itself of your current project... Let me give you two examples:

Example A: A powerful RIA which connects PHP to FLEX via AMF, uses DB via PDO or MySQL/i, would need tons of validation features, http connections and external libraries (such as Lucene) and APIs (such as Google and Twitter). And it's development will take more than a 2 months ... My answer for best framework to use: Zend Framework.

Example B: A website built upon WordPress that just needs some polishing and extra features and it's development time will take less than 3 weeks: CodeIgniter.

I'd switch according to what I really need, because Zend ain't easy to learn, CodeIgniter is quite fast to learn but might not have that much features, etc. Such as in Zend, you'll bump into hundreds of ways to do a single thing, such as trying to make a single query via PDO.... The way Zend docs say is one, then you can sort of make a hybrid of PHP-Zend way, then you can use the existing functionality for PHP but mix Zend only in certain parts... It can become a real mess specially if you have a tight deadline and are trying to learn Zend on the way...

The downside of using other frameworks (not the 'mainstream' ones such as CodeIgniter, CakePHP, Symphony and Zend) is that documentation sometimes is very scarce and so are the users, so if you hit into a problem you might spent more time searching for forums or posting questions. For a web app that would go into production mode, in which you have planned enough time for the learning curve (there's never enough...) and the reliability of the app itself is a must, I would definitely go for Zend, in case your project is more personal or don't have much time to learn, go for CodeIgniter...

Try looking at each framework docs, skip the performance and features sections, get to the dirty stuff and see what you can or can't use of each framework. At the end, if you don't find the following points in the framework you are looking at, then don't switch:

  • Reliability (You know there is someone, somewhere, updating the code on the framework and providing updates. It's also very helpful if there is a big company backing up the framework itself, and not just one guy in a dark basement).

  • Production mode. Someone is using it in production (most frameworks provides case studies or companies who are using it, such as is here Zend case studies [1] or here: CakePHP case studies [2])

  • It helps for specific tasks. Not because someone says Zend is the best or Symphony the fastest, you should use them, you have to look into which specific tasks would the framework help. E.g: do you use YouTube in your app and connect via the old-school stream_get_contents and then start parsing results via a JSON class you made? Zend already provides a class which makes hassle-free the connection to the you tube API and could indeed save hours of development time. This are the points that should always be looked into when looking for a framework, ask yourself 'what would I specifically use of the framework? list the features down, and compare with other frameworks...

  • Amount of users, forums and tutorials. I recently tried one JavaScript library which would apparently speed up things, provide awesome features and the like... I ditched it after a week of Googleing, posting questions which never got answered and looking at really scarce docs... I'm not lazy, but there's a difference when the authors of the framework provide enough docs, examples and forums to the users, than when they just say 'here's the lib, have fun'. For commercial projects I'd always keep in mind this, and would leave the not so popular and experimental frameworks for personal projects or just testing at my place.

My last suggestion, spend enough time during the research, it's better to plan ahead than to try to 'downgrade' or remove the framework during development time...

[1] http://framework.zend.com/about/casestudies
[2] http://bakery.cakephp.org/articles/category/case_studies

40
[+3] [2011-06-29 00:35:10] Jiego Cordoviz

I see FUEL was not yet mentioned here. Either that or i missed it in the comments. I would like to use this framework for my new application because of alot of things:

The Good.

  1. It's the newest kid on the block, i mean, who would not want to checkout the newest kid on the block that made it to the "best php frameworks" list on some sites like devlounge?

  2. Good Documentation - It may not be great yet, but being the new kid, you've got to comment their effort for having such clean and concise documentation. (Unlike 1 framework i'm using right now that i like very much but sucks highly on documentation)

  3. It flaunts and boasts that it uses the best ideas out of all the best frameworks out there and avoids as much as possible the bad things that other established frameworks has. And i totally agree with it, playing with Fuel this couple of weeks has been euphoric. Just the flexibility of coding will make you bear hug Fuel if only he was in the physical world.

  4. It doesn't lack the perks i like from the other frameworks such as community and support.

  5. I like its' profiling. Clean, easy to understand, easy to implement. Unlike other frameworks who claim that using their profiler is easy as pie, before you know it, your scratching google for answers (or SO).

What will hold you back from using Fuel is:

The Ugly.

  1. As of this writing, Fuel is still in its' 3rd release candidate. An official Version 1 is not released yet.

  2. Since Fuel is strictly PHP 5.3 and above, you might have a problem with most hosting sites because they don't readily support the version. *cough*Dinosaurs*cough* Cpanel i think also has some issues if i remember correctly but i'm not too sure about it.

  3. If you want the best assurance of being happy you might lean to not want this because as i've said awhile ago, it's new, there are no concrete guarantees yet, the community has yet to grow and they have yet to prove themselves out in the big bad world. You'll never know if the project will shut down immediately after launching its official release. Or the softwares' development stops suddenly without warning because of alot of factors. This always comes with new stuff.

The Bad.

  • I have yet to find this out. Really.

Conclusion

  • It's up to you man, its' up to your needs what to use and what not to. Your experience and definition of "new" has definitely an impact on choosing a framework. But personally, if you ask me, you will not truly appreciate Fuel unless you've tried out other frameworks. :D Good times!

Note : Don't want to worry when it shuts or not, take the courage to move as its open-source.


41
[+2] [2010-02-21 20:09:41] stillstanding

Zend is good, but too bloated. I prefer lightweight. I want more control of everything. That's not the case with CI, Cake or Kohana. But there's Fat-Free [1]. Follows the Sinatra DSL model. Self-contained, single-file. It has no ORM, but like I said, I want full control, and that includes SQL statements, that way I can optimize my database. It's got a template engine, CAPTCHA, cache for URLs and frequently-issued database queries.

What makes it different is its declarative approach to programming (it makes you feel like you're not programming in PHP at all, but that may be subjective) and the integrated JS/CSS minify feature. And all these features were squished in a 42KB file, most of it is inline documentation.

[1] http://fatfree.sourceforge.net

(2) +1 It may not be the greatest framework, but it gives a clean and simple set of rules and then you're off. I love the fact it's in a single file as well and what amazing documentation! - Jesse
Fat-Free is one of the best documented frameworks around - stillstanding
42
[+2] [2010-09-23 21:43:46] Sander Marechal

I am surprised nobody has voted for Lithium [1] yet. Lithium is a brand new framework that has a lot in common with CakePHP, but with the annoying bits improved. It has a database API that looks and acts more like Zend Framework, with find operations returning record sets and records as model instances instead of associated arrays of data.

Downside: PHP 5.3 and up required, because it uses all the fancy new stuff like late static binding, namespaces, etcetera. Also, it's still at a development stage with much documentation lacking.

[1] http://rad-dev.org/lithium

(1) Perhaps because it has been stuck at 0.9.5 since May, didn't support relationships last time I looked, has virtually no documentation. In answer to the question, it's definitely not a framework I'd choose for a new application. Yet. - Leo
0.1 is the release right before 1.0, and it comes out tomorrow. I just saw nateabele.com give a presentation tonight on Lithium - he and like five other guys were lead developers for CakePHP and started Lithium to take advantage of PHP 5.3 features like closures and namespaces. Lithium looks awesome - you can even use it inside a CakePHP or Zend framework! - Peter Nore
43
[+2] [2008-08-28 11:51:09] cdamian

At the moment I am using cakephp [1] and typo3 [2] lib/div (if you can call that a framework).

But I am getting a bit fed up with both of these, mostly because of a lack in documentation and community support.

The reason why I chose cakephp in the first place was the support for php 4, but now we have completely switched to php 5.

At the moment I am looking at symfony [3] for websites which don't need an cms and SilverStripe [4] for websites which need a little bit of customization.

Both seem to have much better documentation and community support. I also like their models a lot more than the monster associative arrays of cakephp.

[1] http://cakephp.org/
[2] http://typo3.org/
[3] http://www.symfony-project.org/
[4] http://www.silverstripe.com/

44
[+2] [2008-08-06 08:55:31] Thej

I used cakephp recently. Its easy to learn and you can develop apps fast.


45
[+2] [2010-01-20 21:35:46] feketegy

I used CodeIgniter then switched to Kohana.

Kohana is basically a fork of CodeIgniter. The developers cut out the PHP 4 compatibility and rewrote it to use the features of PHP 5 (full OOP)

Although Kohana 3.x is out, it's still pretty much unstable IMHO So I'd suggest using Kohana 2.x

If you understand CodeIgniter then Kohana won't be a problem neither.


46
[+2] [2010-01-20 21:43:48] Chris

Cakephp with Zend in the vendors folder for its libraries.


47
[+2] [2010-01-21 19:28:28] jelofson

I use Solar [1] for all my development.

  1. light-weight, and feature rich
  2. excellent command line scripts
  3. models are top notch
  4. views and layouts based on Savant. They are intelligent and many helpers available
  5. auto form building
  6. excellent API documentation
  7. based on many fundamental design patterns
  8. easy to customize, override
  9. new documentation in production
  10. model validation is simple
  11. model and form integration

I can build complete database apps with admin interfaces (Browse, Read, Edit, Add, Delete) in no time flat.

[1] http://solarphp/com

48
[+2] [2010-01-22 00:42:30] Outrage

My first foray into frameworks and MVC started a few years ago with CakePHP. To be honest, I found it quite difficult to understand and tried out CodeIgniter after a couple of weeks, which I picked up very easily.

After playing with CodeIgniter for a while, I then began to understand the other frameworks much better. It's got a very easy learning curve from a procedural PHP background.

I've tried pretty much all the PHP frameworks since, and although I'd dearly like to spend some time with Symfony, my choice at the moment is Yii which continues to impress me the more I use it.

Zend - I dunno, I never really got the tutorials to work properly myself. It just doesn't feel right for me I'm afraid. Like I need to wrestle with it to get what I want.


49
[+2] [2010-01-22 12:21:42] voidstate

I developed for over a year with Cake PHP and found it very powerful in allowing me to quickly move from concept to prototype to production. If you are making a site which isn't going to break them mould, it has so much scaffolding already in place that you can concentrate on the parts of the site that matter.

However, for power, I am using Zend Framework a lot now. It is a lot harder to learn and slower to get a site up and running even with the command line tools it offers. But the development is moving forwards at an impressive pace and the functionality on offer is awesome but loosely-coupled enough to mean you can easily cherrypick what you need.

I haven't tried Cake PHP with ZF as a vendor as others have suggested but I imagine that would give the best of both worlds for a site that was mostly offering the standard CRUD stuff but needed the odd more complex bit of functionality.


50
[+2] [2009-07-26 10:33:33] community_owned

For Performance I use DooPHP, just found out this framework recently. And I use Zend framework components with it since they share the same new BSD license. DooPHP + Zend = Performance + rich list of features

Besides the framework is really easy to get started than Yii or CodeIgniter. IMHO the database ORM in Doophp is very good.

There's no one BEST framework, we should use stuffs together in our application ;)


51
[+1] [2009-08-28 13:52:18] AlberT

I agree that ZF is the better integrated into Zend Studio and the "official FW", couse of its name :) ... But when I had to decide on which framework I would have based my products Symfony beats ZF.

I think the architecture of symfony is the better implemented in a pure PHP5+ framework, expecially in symfony 1.2 the architecture is formidable.

ZF resambles much more to a very good libraries and components repository.

Symfony is a PHP-development-platform instead and a powerful framework instead.
Symfony is not for novices, it is right, but this is a positive aspect IMHO, as one of the worst problems of a "simple" language such as PHP is that non skilled people easily can write even complex applications. Those apps being of course full of bugs, security holes and so on, requiring a certain skill is a great positive aspect of a framework I think.


52
[+1] [2009-09-15 23:18:08] community_owned

I have checked several frameworks, not only from the php world. Too bring it down to simple things: if you want SPEED then you should take php and take a look at yiiframework or doophp. This is not for people who want everything, but it is FAST as nothing else. BUT - and here it starts to become kind of fundamental - if you want FEATURES - that means you want something that gives you easy access to all things, computers can do, then I think PHP is not the right choice. If you need PDF generation, parsing and generation of office documents, connection, standards, multiserver-setup, standardized repositores and whole enterprise stuff you will very fast find yourself fiddling around with incomplete or really frustrating solutions. It is not the MVC that make frameworks interestng - it is what they give you in terms of power. PHP is FAST - but yu will have a major lack of good integration into anything else. In Python, Perl or Java world you get a solution for nearly every problem implemeted in a clean way that you can use with every web framework existing for these languages. Look at what you really need - simple website or an advanced service? For a SPEEDY solution php is still best way to go.

BTW: Mentioning Typo3 here is kind of a joke, I believe.


53
[+1] [2009-04-15 16:44:47] community_owned

A huge +1 for Zend Framework, if you are working with larger applications or websites. There is a steep learning curve and lots of overhead, but once you get it running it's a pleasure. We've been using it for a year now with great results.

I've also had good experiences with CodeIgniter and CakePHP. I'd recommend CodeIgniter for simple MVC sites, but I ended up disliking the "core" of it, as there wasn't enough organization. CakePHP also has lots of overhead, but is awesome for CRUD applications you want to get up and running quickly. However, it forces you to use many of their conventions, so there is also a bit of a learning curve.


54
[+1] [2009-03-10 11:45:32] community_owned

I've used CakePHP in a couple of production projects and it's a joy to use. The documentation for version 1.2 is in a much, much better state than it was a year ago. The reason I choose Cake over CodeIgniter is because of it's similarity to Rails (right down to the console) and the wicked ORM. There are loads of great components in the Bakery too.


55
[+1] [2008-11-21 11:58:10] eddy147

Prado (http://www.pradosoft.com):

    * Object-oriented and highly reusable code
    * Event-driven programming
    * Separation of presentation and logic
    * Configurable and pluggable modular architecture
    * Full spectrum of database support
    * Feature-rich Web components: HTML input controls, validators, datagrid, wizard...
    * AJAX-enabled Web components
    * Built-in support of internationalization (I18N) and localization (L10N)
    * Customizable and localizable error/exception handling
    * Multiway message logging with filters
    * Generic caching modules and selective output caching
    * Extensible authentication and authorization framework
    * Security measures: cross-site script (XSS) prevention, cookie protection...
    * XHTML compliance
    * Rich documentation and strong userbase

56
[+1] [2009-01-29 13:26:28] Kennethvr

Symfony is my answer. I had the same question a year ago and I made the Symfony choice. It is easy to learn with the superb Jobeet project. They take you on a 24 day tutorial and answer all your questions. This is a solid, good framework with tons of potential for the future. Great documentation and a large community if help is needed.


57
[+1] [2009-03-17 00:56:04] community_owned

i think more often than not, your better off building a framework for the required application, rather than building an application from a framework.

Just because you use a framework doesn't make you a better coder, it makes you a better user of the particular framework you choose.

To use an anology, you wouldn't use a car to build a motorcycle.(with php as the engine)

Also you dont wont to end up being a driver of a framework rather than a framework mechanic.


58
[+1] [2010-02-07 13:38:13] Anatolij

CodeIgniter would be my choise. I've been using CakePHP, but after moved to CodeIgniter programming speed and performance increased.


59
[+1] [2010-01-21 12:02:37] Stuart Quin

I've been using CodeIgniter for a few commercial projects lately. It's been pretty good, taking care of the MVC stuff without much fuss and providing lots of useful helpers. One down side is the lack of a ORM out of the box though the database helper functions make creating your own quite easy. For my next application I'm going to have a look at Kohana [1], apparently it builds on codeigniter but using PHP 5 exclusively. Also includes its own ORM framework.

[1] http://www.kohanaphp.com/

60
[+1] [2008-08-11 08:07:54] Flubba

@Flubba there are several good Zend Framework tutorials and there are also several Zend Framework books due to be released soon.

Getting Started with Zend Framework 1.5 [1]

ZF Tutorials [2]

Thanks for the links! The first one (the akrabat tutorial [3]) was for a long time the only half-decent tutorial on ZF MVC, and it's better now that it's been updated for 1.5. My comments [4] need to be taken in the context of my experiences from January to June 2008, and you are quite right, as the framework becomes more stable there should be much better resources to come.

My main criticism of the akrabat tutorial is still that he puts too much application logic into the controller, and so it is not teaching proper MVC design principles, in my opinion. I hold to the thin controller school of thought where all the business logic should be in the model, not just data access classes.

The second resource looks neat - thanks for that, it should be helpful. As I said we use ZF at work and so it is part of my life now, regardless of my somewhat mixed experience of it.

[1] http://akrabat.com/zend-framework-tutorial/
[2] http://www.zftutorials.com/
[3] http://akrabat.com/zend-framework-tutorial/
[4] http://stackoverflow.com/questions/2648/what-php-framework-would-you-choose-for-a-new-application-and-why#2659

61
[+1] [2008-09-21 22:03:26] Erik Itland

I've just used symfony, but after I started using it, I've never been tempted to try anything else.

BTW: I guess you could have a look at yahoo, -they have built two of their apps on top of symfony. ( yahoo bookmarks [1] and delicious [2])

[1] http://www.symfony-project.org/blog/2006/10/28/yahoo-bookmarks-uses-symfony
[2] http://www.symfony-project.org/blog/2007/10/02/delicious-preview-built-with-symfony

62
[+1] [2008-09-23 15:11:01] Brendon

i'm going to be starting a new project soon and my choice is going to be zend framework with propel 1.3 as the model. I wanted a php5 frameworks and the two choices left for me were symfony and zend. I went with zend because of its integration in zend studio and the use at well architecture.


63
[+1] [2008-09-16 03:39:47] Josh Smeaton

For a recent project we used the Radicore framework. To be honest, it's more a pre-built application that you plug a database into and tick off some views in it's most basic form. However there are API's (reasonably well commented) for exposing access to data.

The pros:

  • Quick development
  • MVC
  • Prebuilt view templates
  • Automatic model generation (allows customisation of model)
  • Prebuilt controllers
  • Prebuilt components for: auditing, workflow, user/roles, menu, search, sort, navigation

The cons:

  • Confusing flow of control
  • Poor OOP support outside the model
  • Amature/Basic looking UI
  • Some complexity in configuration

All of these cons add up to one major problem. If you want to change the behaviour of the framework in any way, it's extremely difficult. Flow of control to various scripts is caused by requiring a specific file and having that execute inline. Often, that can happen 4-5 times in one transaction which makes changing the behaviour in the middle for certain cases is very non-trivial.

If what you're after is a CRUD application, with workflow processes and reporting built in, radicore is an excellent choice. However, if fancy UI and integrated components from other systems are required then it's probably not the right framework to use.


64
[+1] [2010-07-25 02:56:24] Eric C C

I've worked with CodeIgniter, Kohana, and Yii (and to a lesser extent Cake & a few others) and hands down feel the Yii was the best fit for me.


65
[+1] [2010-06-06 14:54:24] pho3nix

My framework of choice is http://www.pradosoft.com/ because is very similar to .net framework implementation and have namespaces like .net


66
[+1] [2010-08-30 00:41:02] Brandon_R

Zend Framework i use for all my projects.


67
[+1] [2010-09-20 16:35:11] Emission Framework

You can try this.

Vitche Emission PHP Framework is a non-commercial Open Source lightweight PHP Framework.

The key idea of that framework is to use central repository for keeping source code and providing all client software with an ability to do real-time source code updates. That makes the client free from the need to keeps the framework's source code.

The following features are supported in the Emission Framework:

  • ORM for database access;
  • SOAP client;
  • REST web service;
  • SOAP-to-REST gateway web service;
  • ICQ client;
  • WordPress content client;
  • SiteMap content client;
  • Caching;
  • GrossCommerce SOAP client;
  • Some UI components.

The source code is available at: http://emission-framework.com


68
[0] [2010-09-20 16:40:24] Emission Framework

Also the Prado Framework is cool.


69
[0] [2010-09-23 20:52:29] Fabian Castillo

Check out this post and opensource project, it seems very interesting.

http://www.excedesoft.com/blog/symfony-cms-opensource-project-apostrophenow/


70
[0] [2010-07-21 21:34:23] Saif Bechan

I have been working on a framework called the RDS Framework [1]. It is the offspring of a lor of websites I made in PHP. With every website I made the system turned into a whole framework.

You can download it and give it a try, it is nicely structures and it is focused on web-development. It has some special features and structuring that is not available in some other frameworks.

There are also some extensions you can download so you can make the framework bigger to your needs.

There are also some video tutoials [2] and there is a documentation to get you started.

[1] http://www.rdsframework.com
[2] http://www.youtube.com/rdsframework

I really didn't like your framework. It's just classes being instantiated without any reason. Just because you are trying to use the mvc pattern doesn't mean you have to instantiate the router and controller class for no apparent reason. - AntonioCS
(1) Hi thank you for commenting, but I wish it was more useful. Your comment is like saying:"I don't like this house because it has a bathroom and I do not shower". The framework is build in such an easy way that you can easily work without the classes router or controller. But if you are going to use it for web development, as I suggest, then those classes are quite handy. Where do you suggest the code of the default controller and router should be? - Saif Bechan
71
[0] [2010-03-21 01:10:05] MathGladiator

The answer is almost always "it depends". I recommend writing the app first really quickly to find out where the real issues are.


72
[0] [2010-08-24 23:32:11] Paulocoghi

I researched extensively on php frameworks, and I have no doubt: I recommend Symfony.

The Best PHP Framework: Is Symfony Really It? http://www.dustinweber.com/main-page/the-best-php-framework-is-symfony-really-it/

Top 10 List: http://www.phpframeworks.com/top-10-php-frameworks/


Dustin Weber has changed his mind, and doesn't recommend Symfony any more: dustinweber.com/main-page/cakephp-best-php-framework - Christian Davén
73
[0] [2011-03-05 22:26:56] Christof Coetzee

All I can say is the choice is really simple, 6 points to note. Have a look at this and choose for yourself http://www.christofcoetzee.co.za/zend-framework-vs-codeigniter-vs-cakephp-vs-others/


74
[0] [2011-03-15 16:13:24] Vance Lucas

Alloy

Check out Alloy Framework [1] - It's a new PHP 5.3+ Hierarchal MVC Framework that works a little differently than most other MVC frameworks, and is much simpler and more lightweight in nature.

The main differences to other framework projects are primarily:

  1. Modular Organization - single folder for a group of controllers/views/entities that are created for the same structure - "blog" or "events", etc.
  2. HMVC (Hierarchal MVC) - Allows module sub-dispatches anywhere within views or controllers - extremely useful for "wiget" type structures within layouts or nested views. Helps promote code re-use for common structures like "comments", "tags", "ratings", etc.
  3. More explicitness - view objects are explicitly retuned by the controller method for display instead of implicitly loaded, etc.

Read more on the Architecture [2] page of the manual.

The URL Router [3] is also very nice and borrows a lot of concepts from Merb and Rails.

[1] http://alloyframework.org
[2] http://alloyframework.org/manual/architecture/
[3] http://alloyframework.org/manual/url-router/

75
[0] [2011-05-25 01:37:51] Rushino

I recommand getting a look at Yii. I am an user from Code Igniter and Yii framework impressed me a lots so far. Stuff are better handled. But that my opinion.


76
[0] [2011-08-05 09:46:19] Arkh

I'd use any framework with a good documentation and some community. What I mean with "good documentation" is something easy to browse, with links between related content and reference tables, with good working independent examples and covering all versions of the framework. I don't want a framework made to sell books or give job to consultants. Some phpdoc or doxygen generated pages is not a good enough doc.

I've used Code Igniter but the code base was using an old version with no way to upgrade it. The only doc available was for the latest version so tough luck. I looked at Symfony 1.x and backed away from the lack of clear doc easily found. I have also had to code some things for Joomla! and Drupal. Awfull documentation, and the Drupal community is lacking when you're looking at how to code some modules.

You can have the perfect modular and efficient framework ever made, if you can not jump and code right away knowing that most answers you may need can be found easily in an obvious area you missed the point of a framework. They are meant to create easily maintainable projects, any new programmer should then be able to leverage this to be efficient fast. Not spend as much time as he has spent learning php to be able to use your framework.


77
[0] [2008-08-27 19:48:56] community_owned

@Karl.. You're totally right. Our in-house framework is littered with calls to the debug_backtrace() function precisely because of the lack of late static binding.


78
[0] [2008-08-27 19:51:30] community_owned

Here is a FANTASTIC article on PHP Framework benchmarks.

Cliffsnotes:

Solar is the fastest of those tested.

Symfony the slowest.

Zend is the most loosely coupled and thus the most flexible.


Where's "here"? - sirprize
please add a link - Good Time Tribe
(1) this question I guess? - Joe
79
[0] [2008-08-06 14:13:58] Adam Haile

I know it's not a "framework" per se, but I've often used Wordpress as a starting platform for when I've need to get a site off the ground quickly and when the people adding content to the site need something dead simple to navigate.

I basically strip out the "posts" and comments portion of a template so that it's no longer accessible and then everything on the site is done with "Pages". And if the user can be a little too curious, I'll remove the unneeded options from the Admin pages as well.

The other great thing about it is that, unlike Joomla or Drupal, there are massive amounts of free extensions and templates to work with, so I can almost always get something running without every having to write very much code at all.


(1) unlike joomla or drupal... sounds strange to me. I would say Joomla and Drupal both have massive amounts of free extensions! - markus
I don't think that whatever you'd build with Wordpress could be called an application. - concept47
WordPress has one of the ugliest codebases I've seen for such a highly popular application. WordPress can be used for storing and accessing content if you need to integrate with an already WordPress-enabled project, but I would never recommend using it as the core of any new application. - Brian Lacy
80
[0] [2008-08-05 18:30:31] Karl Seguin

My best experience comes from using Akelos [1]. Until PHP 5.3/6, the lack of late static binding makes PHP frameworks a little frail, but Akelos manages to actually be a lot more OO than most. It also has a nice view syntax (sintags).

[1] http://akelos.org/

why lack of late static binding makes PHP frameworks a little frail? i do not even understand why we need late static binding, why people need to make static method behave likes a "Object's method"? - anru
81
[0] [2010-01-21 12:49:17] James Kilbride

I've worked with both Solar and Zend framework and I have to say of the two I much preferred to work with Solar. The Solar framework has strong capabilities, intelligent organization, active community and is mature and tested. I exclusively use Solar for all of my PHP development.

I've made use of Zend but have never found to be quite as easy to use, or as quick for development as the Solar framework.


82
[0] [2009-06-30 00:43:33] Bryan Migliorisi

I am an ASP.NET developer and recently was put on a large scale PHP application. We're building from scratch not having little experience with PHP, I did alot of research and found CakePHP to be the best solution for us.

I wrote very strong prototype using CakePHP in less than a week, without books or docs (since their docs are a little weak). I've since got a few Apress books and the project continues to move ahead very smoothly.

So far, I give two thumbs up for CakePHP.


83
[0] [2010-01-21 03:50:51] metoikos

i think symfony is the best. Documentation, samples, great tools... also there is a point i want to understand, why many people copare symfony with CI. CI far far away from symfony's league. CakePhp and Symfony or ZF comparasion would be right, but CI very lightweight than others.


84
[0] [2010-02-04 19:24:56] Brian Lacy

I really like the Zend Framework for flexibility and features on large projects. The community support is also fantastic, even compared with its much older siblings like CakePHP.

However, for small, fast projects, I highly recommend Kohana. It's based on CodeIgniter but with an extra emphasis on speed, and in my opinion, a bit more configurable. Its small community is offset by a very clean codebase.


Zend Framework has also come a very long way in terms of initial installation. The command line tool in 1.8/1.9 is a welcome addition that should ease the transition for newcomers. - Brian Lacy
85
[0] [2009-02-25 07:36:50] community_owned

I am using Symfony. Is a very good design.

Previously used Codeigniter, main features: support PHP 4, and productivity.


86
[0] [2009-03-04 17:31:13] community_owned

I would recommend symfony, the new 1.2 version is very feature rich.

Try out the jobeet tutorial [1]

[1] http://www.symfony-project.org/jobeet/1%5F2/

87
[0] [2008-12-16 19:50:42] user46785

lately i've been using PHPFUSE [1] and I like it a lot.

[1] http://phpfuse.net

88
[0] [2008-12-26 20:22:50] AFG

we have been using qcodo, but the dying community has me scared, and wondering if we should think of making a migration? I'd hate to switch frameworks mid-stream....should we stick with it?

It is NOT an internal use site, it is an external facing application.

Are we stuck with Qcodo at this point? After my initial research, it seemed like there were lots of benefits to it, but the community is as much the product as the product itself.

Thoughts?


89
[0] [2009-03-15 15:38:44] mirz

I would recommend using Symfony as it offers a "standard" architecture and forces the developer to use best practices and avoid PHP's pitfalls. Moreover, symfony integrates many existing components like the Propel and PHPDoctrine ORMs. It is also wonderfully documented, and features an impressive set of plugins and extensions (even ZF components can be used really easily in a symfony project). All of which enables the developer not to reinvent the wheel and code very efficiently.


90
[0] [2009-12-03 05:36:48] AgilE

I'll add my 2 cents too. First of all, it depends on your environment. Many people like hosting their applications on a shared server. If this is the case, a light-weight framework or pure OO PHP is much recommended.

But if server resources is not a problem, many options open up. I've seen Zend being recommended as a good framework by many. Codeigniter is good because it's kind of a skeleton framework. It doesn't have unnecessary magic, but it has all the libraries that you'll commonly need. The learning curve is quite small if you're experienced.

Recently, the Yii (yiiframework.com) has made a lot of progress. You might want to check this framework out. I played with it a little and it's really powerful. So before considering other frameworks like Codeigniter or Zend, try Yii to see if it does what you want.


91
[-4] [2009-03-04 17:45:50] community_owned

So which PHP framework would I use... To put it bluntly: None.


If you don't use any framework it's your loss. I have made my own little framework and use it sometimes on my own projects and sometimes I use cake or zend. It's always easier to start with a good foundation and that's what most frameworks are :) - AntonioCS
What's the point of that answer? Or this comment? - Robimp
(1) the best framework =) <?php //todo: put your code here ?> - Fivell
92