Recently, I had a short engagement for a client who had an existing application written in Symfony2. I haven’t really touched the modern PHP frameworks (the most recent experience was CakePHP 1.2, which was last released almost 3 years ago). It was a pleasant surprise.
What was awesome about Symfony?
- It forces you to think in terms of components (called bundles). Even the core functionality is a bundle.
- There are many bundles out there to let you get up to speed quickly.
- It uses Composer, a dependency management tool much like Maven or NPM, to manage packages.
- The documentation is extensive and versioned.
- There is a clear product roadmap, including long term releases and clear deprecation dates
- It has built in integration testing functionality, which lets you test clicks and form submissions and search the DOM for expected results.
- There is clear configuration support for different environments.
- It uses an ORM which seems capable–I didn’t get to dive into this too much.
Of course, the proof is in the pudding, and I didn’t get a chance to live with this solution for more than a few weeks. I don’t know how active the community is, though the google group seems relatively active. I’m sure there are warts in Symfony2–searching for ‘symfony2 sucks’ turned up a few rants. But, for a greenfield webapp project, I’d happily use Symfony2.