I’ve taken long looks at both CodeIgniter and Symfony.
|off-topic:| Firstly, I don’t think Symfony has better ‘hype’ than CodeIgniter. In fact, lack of hype/marketing flare is one of Symfony’s hurdles. Although ‘hype’ <> good graphic design, when you finally land at codeigniter.com, you are greeted by a nice, slick, well-thought out site, not some poorly-designed or no-frills-sourceforge-ish mess. |/off-topic|
CodeIgniter & Symfony in my mind are the two best framework-communities for PHP, operating at two opposite ends of the spectrum. Now, before everyone starts flaming me with their favorite mini-frameworks, I personally wouldn’t invest my time in learning a framework unless it had some history, some backing, some visionaries protecting it from be-everything-to-everyone-bloat, good documentation, and a big, vocal community. That means that in the end, I’d probably really only look at CodeIgniter, PHPCake & Symfony, possibly a couple of others… I should probably give Zend a closer look than I have to date.
CodeIgniter is the simplest, help-me-write-my-php-faster framework that meets the above requirements.
CodeIgniter certainly has its paradigm issues, but unless you’re building something that really needs to be OOP down-to-the-core (just because CI is php4-compatible, it doesn’t mean your functions can’t be php5…), CI does very little to hold you back.
Symfony, on the other hand, is (at least trying to be) a giant repository of web-building best practices. It’s enormous, it’s a bit slow, but there are a tremendous number of resources (core & 3d party) to leverage… I’d say for every helper/plug-in available for CI, there seem to be 2-3 core-or-3rd-party ones for Symfony… and not pre-configured snap-ons, but (generally) well-thought out libraries so that you don’t have to learn the ins-and-outs of authentication strategy, security, Amazon S3, etc., etc., etc. It’s a very philosophical community, I tend to think that most of what gets ‘accepted’ there in terms of libraries/plugins/core can be deemed to be built reputably/via best practices). And of course the ORM approach makes it very easy to build an app iteratively without having to plan/commit to a database model beforehand.
On the other hand, if you are not sure about frameworks, my sense about symfony is that you need to make a significant commitment to learning it before it begins to pay-off as a faster development approach. As well, it’s a bit more of an international community, which means that if english is your first language… well, the community forums tend to be a little harder to navigate because so many of the coders have trouble communicating well in english. I’d also venture to say that it is not quite as newbie-friendly a community as CI (although it is very friendly compared to most other large, deep, open-source projects!).
As a freelancer working on gigs that often go beyond the capabilities of a CMS, I’ve come back to CI recently; it’s a more attractive model for me. My projects should be somewhat portable, meaning that if my client invests in a PHP website, another programmer should be able to pick up the contract and figure out how-I-did-what without too much investment, and CI is certainly better in that regard. On the other hand, if I was hiring 10+ full-time developers to build a web 2.0 business with a real investment & good internal development documentation, I’d probably make them all learn Symfony…
My 2ยข.