I don’t spend an inordinate amount of upfront time designing software. Sure there are things that need to be thought out before coding, but for me, I just care about the broad strokes in the beginning. So I bust out a quick working prototype in Symfony, being mindful of how I want the broad strokes mapped to bundles and controllers. As I’m building the first proof-of-concept application, I’m constantly moving code around and Symfony is great at allowing me to do that. If I’ve written nice, tight, methods and controllers that are properly decoupled and can function on their own, it’s not a big deal to rearrange code, sometimes pretty dramatically with little more than some cut and paste action.
Before frameworks came along, I remember writing lots of prototypes that just got thrown in the trash. Now with a proper framework like Symfony, the proof-of-concept applications can continue to evolve into professional production-grade applications. The reason is that the basic nuts and bolts of the web application are provided by Symfony, so there’s less opportunity to just crank out some lame PHP code for a prototype that couldn’t ever be manageable as a production application, no matter what you do to it.
Other frameworks also make this easy to do, but for me, Symfony just does it in a way that makes sense for my brain.