Some of my coworkers have been struck by the Python bug (the one that makes you think Python is superior to all other languages) and they’ve been using the Django framework quite a bit. Since most of our code is in PHP, my knowledge is focused around PHP, and I have not had the time to learn Python, I thought I would check out some PHP frameworks.

I don’t think PHP is a perfect language, but I connect with it easily and it makes sense to me. I think its shortcomings can be overcome with a good framework. I decided to check out what seemed to be the top 5 frameworks and see what my initial impressions were based on simply viewing their sites and reading a small portion of the documentation. If you’re looking for a quick summary, feel free to scroll to past the details. If you’ve had experience with any of these (or any other) frameworks, feel free to comment and let everyone know.

Note: This information will not be kept up to date and was collected over the past few days (so it may already be outdated). This is just a summary of quick impressions at one point in time.

CakePHP

  • Most recent release: 9Jul07; Version 1.1.16.5421
  • PHP Version: 4 and 5
  • Documentation: The API documentation could use a designer’s touch.
  • Videos: Their site has several videos on the screencasts page, but they are made by a variety of people. That means some have sound, while others don’t. The quality and operating systems also vary.
  • Forum/Community: I didn’t see a forum specifically, but there are several sites for sharing Cake-based projects. A comment left by Daniel Hofstetter below says that there is a CakePHP Google Group used for discussions.

Website Impression
When I first saw this site a while back, I didn’t like it. It has a sort of “Web 2.0″ + “retro” + “drugs” look, but it grows on you like mold. The giant “Download It Now!” button almost looks like the arrow is pointing for you to donate rather than “down”load. In truth, it took me a few seconds to figure out the word “It” on the button. I thought it was a “7″ and a “t” or an “H” or some secret code to get 10 extra lives. Maybe you just have to do whatever drugs their site’s designer does to know the real meaning.

The search feature seemed like it would be helpful since it divides results into sections, but a search for “POST” did not have any results in the manual or wiki. The search page should feature the top ten links or something similar when no keywords have been sent yet because a giant white box just looks bad. The feature as a whole obviously needs some help because when I looked for “your mother” and “german chocolate cake,” I found far too many results. I think this site has a lot of potential, but it “isn’t there yet.” For instance, the Bakery links to a page that looks quite different and has no real explanation. Conversely, CakeForge goes to a different domain but actually looks like it is more tied to the main site than the Bakery.

CodeIgniter

  • Most recent release: 12Jul07; Version 1.5.4
  • PHP Version: 4 and 5
  • Documentation: There is an excellent User Guide that has examples of pretty much everything and also a fairly small Wiki that you can pretty much ignore.
  • Videos: The video tutorials section has a simple, Hello World video as well as the obligatory “Make a blog in 20 minutes” video.
  • Forum/Community: The CodeIgniter Forum is powered by Expression Engine and features nearly 44k members and over a quarter-million posts. It does appear to be fairly active but not that active.

Website Impression
The main site is good and the User Guide has a nice look to it, but don’t bother trying to view it with JavaScript unless you want to go back to the table of contents a lot (the nav menu is JS-based). The menu tucking away is annoying, but the actual navigation structure is clear and simple. The profanity on the front page (”kick-ass”) is probably fine or even entertaining to the average web developer, but not to his/her boss/client.

PHPonTrax

  • Most recent release: Unknown; Version 0.14.0
  • PHP Version: 5
  • Documentation: The API Documentation is confusing and has a lot of blank pages. The wiki (powered by MediaWiki) is missing a lot, but at least it is readable.
  • Videos: There is a screencasts page in the wiki with a basic setup video and a three-part blog video. I listened to part of the blog one and thought that perhaps a blackhole had stolen the speaker’s enthusiasm and left an empty void. You might be able to stay awake if you squint at the far-too-small text to figure out what is going on.
  • Forum/Community: This forum features a whopping 181 registered users and 1307 articles. It’s powered by phpBB and the most recent post in a section other than general was nearly two weeks ago.

Website Impression
The site is clean and simple, though I’m not sure why there are so many “site created with” images. There’s a “powered by php” one, which seems obvious considering the page title, URL, and body contain “PHP” many times. Then there are three PHP Trax images, just in case you weren’t sure if they used their own framework after the first two. The download page suggests that PHP Trax relies on PEAR, but the about page doesn’t even mention that. You can also type whatever you want as the subdomain to get to the site.

Symfony

  • Most recent release: 31Jul07; Version 1.0.6
  • PHP Version: 5
  • Documentation: The documentation is quite extensive and there’s even a printed version that you can buy. The documentation could use a little more spacing, because there is quite a bit of text (and samples) on each page. There is also a Trac-based wiki with some additional info.
  • Videos: There is an Ajax video, showing how to easily use Ajax in a Symfony app, and a admin generator video, showing how to quickly make an admin interface to a web app. If you have a hard time understanding accents you may have to speed-read to try to figure out what is going on.
  • Forum/Community: The forum is powered by FUDforum and appears to be semi-active.

Website Impression
This site has clear navigation, but some of the pages feel a bit crowded. It’s partly due to having so much information on the site, but a little whitespace can go a long way. It’s easy to see multiple ways of installing Symfony and the site has a very serious, professional tone.

Zoop

  • Most recent release: 1Jan07; Version 1.2
  • PHP Version: Uhh…?
  • Documentation: The API documentation is just the output of phpDocumentor in an iframe generated over a year ago. The From A to Zoop section is semi-helpful, but it had a few blank pages when I checked it. Overall, the documentation is lacking.
  • Videos: The screencasts page features two videos, neither with sound or any real showing of what it is like to code with the framework.
  • Forum/Community: The forum was actually made using Zoop, but it is quite inactive. It’s also not very pretty.

Website Impression
The first day I looked at the site, I thought it must have been running on a 486. The pings were returned in 40ms, but the pages were taking several seconds to load. I almost closed the tab and avoided doing a review on this framework because it was so frustrating. Since then, I’ve seen that the site is generally slow, but not typically as bad as my first use. After using it at fast-snail speed, I discovered broken links and decided I must have made a mistake in deciding this framework was worth looking at.

Summary

CakePHP: One of the most popular PHP frameworks, this one is definitely worth checking out. I think it is best for medium needs (as in, not for extremely simple apps or huge corporations).

CodeIgniter: I am working with this one for my site redesign and have been mostly pleased, particularly at how intuitive using it is. It’s lightweight and fast, but that also means it does not have as many features as the others. I recommend it for the hobbyist or for small apps/companies.

PHPonTrax: This one has potential, but I would not use it yet. Hopefully some of the documentation will improve so it can gain a following and grow significantly.

Symfony: If you are extremely serious about your framework, this is the one to choose. Of all of the ones I looked at, this one had the largest feature set and the most documentation. It also felt the most like something you would use for a major site (e.g., competing with Amazon). They claim the learning curve isn’t bad, but it looked less intuitive than the others. The complexity is made up for by its capabilities though.

Zend: You may be wondering why I didn’t review Zend. We use portions of it at work, and I haven’t had a great experience with it. For instance, when I redesigned the 404 page to use search results from Yahoo as suggested pages, Zend’s class was not working. I opened the file and found that the class was extending another class. I opened that class and found it was extending another class. When I reached the parent class, I found the comments were all “todo.” Needless to say, I wrote my own Yahoo Search class (that actually works and has a good set of features) and I was surprised at how easy it was.

Zoop: I tried to find something to like about this framework, but I really could not. If it were in version .4 or something, I might be more forgiving. The things that it brags about (e.g., Smarty, GuiControls) don’t impress me at all. The fact that caching was just added in this version tells me their priorities are far different from mine. I recommend against using Zoop.


2 Responses to “Initial Impression Of Five PHP Frameworks”

  1. 1 Daniel Hofstetter

    The forum for CakePHP is the Google Group: http://groups.google.com/group/cake-php

  2. 2 Gordaen

    Thanks Daniel, I’ll add it to the post.

Leave a Reply