What framework(s) would you suggest for a strong, extensible dev platform?

frameworks, php, symfony1, zend-framework

Solution

After some research I've decided to go with Symfony. Here are my reasons:

- Less verbose than ZF

- Seems very customizable due to usage of YAML files (yet I never feel overwhelmed by them)

- Autoloading of custom classes doesn't require any extra work like in ZF (albeit it's not hard to set up in ZF)

- The developer toolbar is great, and they're adding some nice features to it in ver 1.3

- The ability to use pieces from other frameworks (ZF, eZComponents) makes me feel confident that I won't have trouble finding what I need

- Comes bundled with Doctrine and is very easy to set up (in fact Doctrine will become the default ORM in ver 1.3)

- It seems like there's a much larger community for Symfony. Google "symfony tutorials" versus "zend framework tutorials" and you'll see a massive difference in the number of results

- Plenty of documentation: tutorials (the Jobeet tutorial so far is very good), API references, and a more human readable description of the framework and its underlying principles

- Yahoo! has used it for a few of their own projects - it's nice to see a Big Name back a framework IMHO

Edit: For the sake of hopefully helping others in the same situation, here are some things I don't like about Symfony:

- Does not follow the PEAR naming scheme (ZF does)

- Internal classes begin with "sf". This is contrary to the practice of capitalizing the first letter of the class name

- Variables and functions are written_like_this, yet class methods are camelCased - this seems sloppy to me

These are all cosmetic issues though; things that bother me because I like to do things my way. I realize that whenever you use third party software you must be willing to make some sacrifices.

ZF is certainly a nice framework, but I feel using Symfony as the primary framework and extending it with pieces of ZF is the best choice for me and my team.

Edit

It's been 2 years since originally posting this, and since it's still getting hits I thought I'd give a quick update. I probably built about 25 - 30 projects using symfony 1.x in the last 2 years, and I'm very happy with how it performed. As a full stack MVC framework, partnered with Doctrine, it handled almost everything I threw at it. And whatever it couldn't handle, it was easy to add my own custom code. In fact, that's what I love most about symfony - how easy it is to extend. I ended up building a bunch of plugins and Doctrine behaviors that greatly reduced development time. And the admin generator tools have been a god-send. I'm still using symfony 1.4 for a few projects here and there, but have decided to mainly focus now on using Symfony2. It's a completely different beast than symfony 1, but I really appreciate its architecture. More importantly, it seems even easier to extend than symfony 1.x. I do miss some of 1.x's features, but that's the sacrafice you have to make when switching frameworks.

Problem

First, let me apologize for Yet Another Framework Question. But I think this is different enough from the usual "What framework should I choose?" to warrant it. Here's my situation: For the past year I've been using a custom framework. It's been used on everything from small CMS's to larger sites and even a mid sized social network. It's worked great but I now see its limitations. So, I've decided to switch to a 3rd party framework. The simpler frameworks (CI, Kohana, Cake) seem too inflexible from what I've heard - so this led me towards ZF. But, I've also heard that ZF may be too flexible and thus hard to work with. What further complicates this is that I'm looking for a one-size-fits-all solution; I need a setup that works on small projects to very large projects. I am the main developer, but I need my partner to eventually be able to learn the system and help with the less complicated programming tasks. I've researched Doctrine and I love it. So I'm leaning towards Symfony (with Doctrine) as the main framework with ZF to fill in the gaps. Plus, I need the ability to add my own pieces to this platform parallel to any 3rd party libraries. I hope this will provide me with a solid, extensible platform, as we really can't afford to be switching out frameworks every few projects. I'm looking for advice from others who have been in the same situation as I am in now. Any advice would be greatly appreciated. Edit: I've posted my solution below in hopes of helping other people in the same situation

Original source

Related problems