I am about to begin on a new project. This project is a migration of an existing, large application from Cold Fusion running on a Windows server with the SQL Server 2000 database server to a LAMP server. Yep, I get to convert the application to a LAMP application. The reasons for the conversions are many, but primarily the goal is to upgrade the platform to something modern, implement some fundamental changes that would need a wholesale code revision anyways, and provide easier integration with another application that runs with PHP and MySQL. So the change makes sense in our case.
But this means I get to make the choice of which framework, if any to implement. Today I began the research necessary for this. Things sure have changed in this topic area since I last looked - there are LOTS of choices for a PHP framework. But it would seem the primary options are either Zend Framework or CakePHP.
As I was doing my research I came across a few good links that may help others who need to make a choice:
- Notes on Choosing a PHP Framework: A Comparison of CakePHP and the Zend Framework - this shows a good comparison between the two frameworks and is very good at staying objective.
- Taking a look at ten different PHP frameworks - this shows a nice grid with various features compared to 10 different frameworks.
- And don't forget the documentation, videos, and other propaganda on the Zend and CakePHP sites.
Of course there are a number of other frameworks available. From what I can see (without installing and using each of them) is that these are almost all variants of the Ruby on Rails concept - that is that they all implement the MVC design pattern. They almost all force a fixed convention on the developers, and have a rigid structure (which is fine in most cases). From my experience with Ruby on Rails, I know that this convention and structure can sometimes be more trouble than it is worth - especially with small applications, or with applications that are complex and cannot easily be made to fit the desired structure. Unfortunately, this is the case for my new project - it cannot easily be described as "simple", or as having a "simple" structucture.
So, it looks like Zend Framework or CakePHP is the solution for me. Both of these support the MVC pattern, and CakePHP is a little more rigid about it. With Zend, the MVC pattern does not appear to be strictly required, though the documentation/screencasts I've seen thus far suggest this is the preferred technique. I'll try both though so that I can make an honest assessment. But I'll do that on a smaller application first - one that should only take me a day or two to complete.
I'll keep you posted on my findings.