I have ready numerous posts here on SO about framework1 vs framework2 however it seems to be alot of personal opinions that are one sided. Based on the following can someone tell me which framework would be ideal for my needs?

  • Build a rich featured API where other sites and devices can use the API to use website features and access it's content.
  • RSS Feeds with both XML and JSON for jQuery interaction.
  • Ability to use layouts / templates that are customizable.
  • Use of plugins so that I do not need to duplicate code.
  • Database querying with relationships.
  • GREAT documentation.
  • Actively supported.
  • Doesn't REQUIRE command line access.
  • Easy to manage file uploads and move the files around so only certain users can download them.
  • Customizable access level so users can have different access levels depending on which project/section they are viewing.
  • Low overhead usage.
  • SEO URLS that do not require the '/view','/edit','/add' in the urls (depending on which action you want to do.)
  • Support for jQuery

There have been a few frameworks I have seen that support some of these but not all. I am currently using CakePHP for one project but do not think it would fit my needs as the database querying can get horrendous. I have heard a little bit about CodeIgnitor however it doesn't seem to easily use templating (maybe I just misunderstood what I read).

If you could tell me which framework you think would be ideal for these needs and why that would be very helpful!

4 Answers

mario On Best Solutions

I'll just spamvertize my little framework overview table here. The simple table answers a few of your technical points:
Use the detail/feature view to cherrypick your options.

  • RSS isn't a standard feature even with the big frameworks, use a PEAR library
  • templates: all frameworks use them
  • plugins: depends on your concept of plugins, most frameworks are extensible though
  • look for "ORM"
  • GREAT documentation: that would limit you to codeigniter or cakephp
  • Doesn't REQUIRE command line access: except symfony+cake, few do
  • file uploads: this isn't a standard feature, but I'd just mix and match a library
  • Customizable access level: practically all frameworks come with a permission system
  • Support for jQuery: this is surprising. Prototype seems to be very strong, only half the frameworks use jQuery by default
Stephen On

CakePHP database querying doesn't have to be horrendous. (Though, I remember my first few projects were definitely hard on the database)

With the right optimization, normalization/de-normalization of your data, and a few tweaks here and there (persistent models comes to mind), you can accomplish everything you've inquired about with CakePHP, and keep your database load to a minimum.

That said, if you truly want to move to something else, I'd go with Zend Framework.

Symfony is bloated, (and yes, fanboys, this is still true).

Codeigniter is super lightweight, but you're going to be doing a LOT more work to accomplish your listed requirements. I've spun up two codeigniter applications, both relatively simple, and both took twice the work / twice the amount of new code than if I had gone with say, CakePHP.

stillstanding On

A lot of religious fanaticism floating around when you talk about frameworks. But take a look at the documentation of Fat-Free Framework. It just might catch your fancy and requirements.

bpeterson76 On

Before I answer, let me qualify that I'm certified on Zend, a frequent user of CodeIgniter, and daily user (and hater) of Symfony.

Zend's setup, especially if you're doing a small-medium sized site can be ugly. Especially using the data mapper strategy, you're talking a thousand or more lines of codes just for the model setup. CodeIgniter is much better setup-wise, but still not insignificant.

Command-line free --essentially-- knocks out Zend. It's doable, but not fun (see thousand lines of code, above) Built-in user auth isn't nearly as good on CodeIgniter as Zend, perhaps that's a serious knock....definitely no templating there. Symfony is flat-out done because of the addition of /view /edit, etc.

Hate to break it to you, but it seems that many users of all these frameworks are not native English speakers. Forget about Symfony, seems entirely eastern-European based. I'd hate to be a new-to-php user of Zend Framework with all the competing tuts with their assumptions of some semi-complex concepts. There's a reason that Zend's training is expensive and full.... Again, CodeIgniter is not horrible, but still can be frustrating.

Simply because of our extensive use of Jquery and desire to avoid a ton of hack-around, my company has dumped the frameworks altogether. Now setup is purposeful, not for a framework...just build a DAL, assemble classes, build views, and done. Established functions are re-purposed as "plugins" that we actually know and understand. Most interaction is Jquery based Ajax (sometimes XAJAX) which really doesn't take advantage of the frameworks anyway--and fights tooth and nail with Symfony. For those who argue that frameworks force MVC, I have a VP of Development who does that just fine, thank you. Perhaps it's not the right answer for you, but we're glad we went this route. It's saved weeks worth of documentation-hunting.