The Perfect PHP Framework

I’ve been looking at a lot of framework recently, Zend Framework, Symfony, CodeIgniter, Yii, Prado, Lithium, KohanaPHP, Recess Framework, Akelos, Fuse Framework, Solar Framework, Seagull Framework, Fuse Framework, PHP on Trax, etc and haven’t found one that suit my all my needs. I’ve been using Zend Framework for a couple of years now and am pretty happy with it, however recently I’ve been creating web apps which mainly deliver content through a REST API, which ZF does not support out the box.

I’ve also been meaning to look into Ruby on Rails, but this is a bigger commitment as I don’t know ruby. The main reason for this is developers are still going on about how great Rails is even though that the buzz has died down, coupled with the fact that the rails team have just released v3 it seem like a good time.

After going through a few basic tutorials of Rails I could immediately see the benefits, even though I was developing on a Windows machine and Rails is slow as hell. The main things I love about Rails is scaffolding, instant REST in XML and Json, the command line interface CLI (and I thought I would hate that) and other things I mention below.

My main concerns with Rails were my speed of learning and then convincing everyone at my company it was the way forward, finding web development work in Leeds for Rails and the lack of hosting companies offering a server with Rails as a setup. Hence, I decided to have a really good look round at the PHP Frameworks to see if there was anything that come close, so far my attempts have failed.

Here is my perfect PHP framework

Thing I need:

  • PHP 5+ (I need autoloading!)
  • MVC
  • No templating language, I just want PHP
  • Optional Command Line Scaffolding which creates CRUD Models and Controllers
  • Automatically exposed REST API with xml and json formats
  • Fast
  • No huge config required
  • Nice strict code conversions (e.g. Zend or Pear)
  • Easy to use cache (automatic would be nice)
  • Validation
  • Good documentation
  • Production Ready

Things I would like:

  • Modules
  • Support for multiple databases (master, slave)
  • Big community

Things I don’t care about (which other people seem to):

  • The size of the Framework
  • PHP 5.3 Name spacing

I think for the moment I will stick with Zend Framework, do the Yii Blog Tutorial, learn more Ruby on Rails and continue developing my own personal php framework.