PHP Application Framework Battle Royale: CodeIgniter vs. Symfony
I found CodeIgniter yesterday and it looks really promising for a php framework. It's very similar to Symfony but its geared towards the shared hosting crowd who wants a framework that can work with them a little better (or at all). I worked with Symfony about a year ago on a project called MeetFish and it was really cool to see how rapidly we developed the site using a framework (the awesome programmers at Agathon were the real code masters here while I did the design and a little view coding). I've always wanted to use Symfony on another project but was never able to because I don't run a dedicated server and don't have the time to figure out if it will work in my shared hosting environment. Basically, if I can't install it in under 30 minutes, I can't use it.
This is where CodeIgniter comes in. They claim that the framework works in shared hosting environments, and alleviates the need for the command line. In other aspects it looks very much like Symfony or Ruby on Rails but without the fancy command line auto building features (however, it looks like CodeIgniter handles some of this from php script calls).
Here is a one to one "CodeIgniter vs Symfony" comparison:
Feature | CodeIgniter (1.5.4) | Symfony (1.0.6) |
Footprint (including docs) | 1.83 MB | 7.84 MB |
Performance | Never mention tweeking the server for performance enhancements | Mentions tweeking the server, lots of performance inhancements that would be impossible on a shared environment. |
Server Compatibility | Claims to run in shared hosting environments and up. LAMP Platform Install Page |
From my experience, very difficult to set up if you can't use PEAR to install and do no run a dedicated server (or do not have root access). LAMP+PEAR+Other PEAR Libraries (Phing,Pake,Creole...these are now bundled with Symfony) Install Page Here and Here. |
Configuration | one primary config file | lots of config settings |
Command Line use | no command line interface | cool command line interface to set up projects, scaffolding, crud, etc |
Libraries | written to be loosely coupled | Depenent on some libraries as mentioned above |
Documentation | I am very impressed with the documentation on both sides. Symfony has more, but it is a much larger project. Symfony has more tutorials and they are better, and symfony has a book | |
Simple Templating | both use PHP mixed with helper functions/classes | |
Helper Functions | yes | yes |
Cache management | yes | yes |
Smart URLs | yes | yes |
Scaffolding | yes | yes |
Multilingualism and I18N support | Uses Language Files | Sophisticated i18n internationalization |
Programming Structure | both are MVC models | |
Ajax support | can be integrated | supports natively, and is really cool |
Overall, Symfony is more sophisticated (ie. harder to use) while CodeIgniter seems more geared to my level of programming and environment. Symfony might be good for you if you live in code day in and day out, and have a dedicated server, but if not, give CodeIgniter a try. I'll report back after I do some real tests with CodeIgniter to give my honest opinion about how it works.