Over the last month I have be scoping a large web app for a client that has had me looking into different PHP frameworks for the server side and Javascript frameworks for the front end. Following on from New Years Day Zend2 Hackathon I decided to try out Symfony2.
The try out project
I decided that the best way to weigh up between frameworks was to build the same thing I built last time, a basic album listing system that I built last time. It has a bit of everything, database interaction and objects, listing views, forms etc.
So did it go
First thing first, I love the Doctrine integration. The whole point of the last hackathon was to get ZF2 and Doctrine2 working together, something that isn’t done be default. Symfony2 however is has Doctrine all but ready to go from first download. The documentation made the little that needed to be done a breeze.
The second thing that made the test project quicker to get running was that the command line and Netbeans integration meant that entity, model and controller creation was just a couple of commands. All I really had to do was code up the controller actions and layout the views. The whole project took a fraction of the time the ZF2 project took.
But then there is the extras
If you download the full version with all the vendor bundles that you get a lot of stuff. While I haven’t gone through all of it, one inclusion that was a present surprise was Swiftmailer. This is a great emailing library that I already have plans to use in the near future in another project. It includes a plugin for mail throttling. It is really a great library that I hadn’t used before.
So overall?
So the downsides first. It doesn’t have a dedicated REST controller like ZF2 has. This potentially doesn’t seem like a big thing after finding the FriendsOfSymfony github project. Among other quite useful looking bundles they have two REST API bundles to handle requests and routing.
The biggest thing for me is how quickly I had the app up and running. The fact that it isn’t in beta helps. The documentation is awesome, the integration with libraries like Doctrine and Swiftmailer and over project setup makes it at the top of the list for me. I’m actually really looking forward to building this project now.