So you’ve decided on a framework over a CMS for your web application? Me too! Here’s fundamentally why:

  1. Expandability. A job board is a complex application, and I want to be able to expand it with various modules as my time and resources increase.
  2. Flexibility. I want to know where things are going at a low level so I can better understand the system, and control the overall direction of the project.
  3. Change/Experience. I’m interested to see how a web application is designed and built from a low level, and how PHP5 and OOP can deliver it.

The Contenders

After looking through all the entries in Wikipedia, I’ve picked out the 24 frameworks roughly at the level that I’m after. The rest were either stupidly under-developed like BarebonesMVC, or were at too high a level like Joomla

Akelos, ATK Framework, Atomik Framework, CakePHP, CodeIgnitor, Fuse, Horde, Jelix, KISSMVC, Kohana, Lion Framework, PEAR, PHP on Trax, PHPOpenBiz, phpPeanuts, PHPulse, Prado, Qcodo, Simplicity PHP, SiteSupra, SolarPHP, Symfony, Zend Framework, Zoop Framework

Early Elimination

The first round eliminates those aren’t regularly updated, or have a very small community behind them. Call me superficial, but I don’t like to put my time and trust into lifeless projects. If I’m abroad, I’ll choose a restaurant that’s bustling with people over one with dim lights and empty tables.

  • Akelos: last release was October 2007.
  • Fuse: Seemingly no community behind the project.
  • Lion Framework: Small community.
  • Jelix: A fork of Copix, a french developed framework. Unsupported.
  • KISSMVC: No-one home.
  • PHP on Trax: Slow development.
  • phpPeanuts: Again, no community.
  • PHPulse: A one man project.
  • Qcodo: Admit themselves that it’s had its day. It’s now it’s slowing and looking to change direction.
  • Simplicity PHP: Less than a year old so too early to judge.
  • Zoop Framework: Sounded promising, but nearly two years without a release…

I’m going to give SolarPHP the benefit of the doubt until I’ve explored features. It’s taken three years to get to v1 alpha, but the documentation is superb and there’s a heck of a lot of output from such a small community.

Round 2

Now that we’re down to 13, it’s time to explore some of the fundamental differences between the frameworks. I need to find out what they are, and who are their audence.

High Level (application platforms)

  • ATK Framework: Designed to churn out applications very very rapidly. It calls itself a ‘business framework’.
  • Horde: This took me a while to figure out. Horde is made up of two subpackages, ‘Horde’ and ‘Framework’. Horde is the higher level one. It’s like an application hub, in that it essentially is an application that glues together other applications. Framework is a code library that’s based on PEAR.
  • PHPOpenBiz: Bit different this one. This is an XML metadata driven framework, and they claim there’s no PHP coding involved.
  • SiteSupra: Found a good descriptive word for high level frameworks – application platforms.

Low Level

  • Atomik Framework: Simple framework not using MVC, but instead uses two ‘layers’ – application logic followed by the template.

Class libraries

  • CakePHP: A model framework. Uses strict MVC and ORM conventions so it forces you to code in a certain way. Well supported and highly recommended.
  • CodeIgnitor: Another class library managed by the Ellislab company.
  • Kohana: A fork of CodeIgnitor. Main differences are that it takes advantage of strict PHP5 OOP and is supported by a community.
  • PEAR: The grandad of frameworks. PEAR is a massive library that set the benchmark for other frameworks to follow. It has been described as more of a library and lacks the cohesion of a structured framework. Each component is divided up into a separate project called a package which can lead to crossovers in functionality
  • Prado: The only event driven framework to feature here. For anyone who feels comfortable programming with Visual Basic, thise  could be PHP framework for you.
  • SolarPHP: Almost like a lightweight Zend Framework.
  • Symfony: The hardest framework to get my head into. There seems to be a lot of code generation via command line tools. Well recommended.
  • Zend Framework: PHP’s ‘official’ framework. A massive library of code. This is the only framework that I’ve tried prior to writing this article and I agree with a lot of other developers that it is one of the most flexible frameworks out there.

I’m going to dismiss one framework straight away – Atomik. This is not what I’m looking for and I can’t see a scenario where I would find it useful. In my opinion a simple framework is an incomplete framework.

All the high level frameworks are out too. I want something slightly lower level that what they offer, though I can understand the point in having them. If a client wants an application quickly and cheaply to use purely for in house purposes then I would recommend using one of these frameworks. Horde looks like an ageing giant. There are some fantastic applications that have already been released, namely IMP the webmail client. PHPOpenBiz I don’t really get, a framework for PHP developers that don’t like coding PHP? XML driven templates maybe, but XML driven logic… ATK Framework looks like the best choice for data managment applications, whereas SiteSupra is like the new Horde and can serve a variety of applications for different purposes.

Down into the libraries, or perhaps more appropriately ‘the rest of them’. PEAR is too disjointed, I want something that all fits together nicely to keep all duplication to a minimum. I’m not too keen on the idea of event driven PHP, it sounds a bit too alien, which puts Prado is off the list. And ffter looking at some of the tutorials I’ve decided not to delve further into Symfony. I don’t like the idea using command line tools to generate code and databases. The last elimination is SolarPHP. It was a simple choice between it and Zend Framework. Zend has a big organisation and community behind it, and the killer lucene search module which could be massive in my final decision.

Read part 2