Symfony2: A First Look

I am going to take a look at the Symfony framework and write up my experiences as blog posts. Specifically I am going to look at Symfony2 which is a major rewrite from Symfony. At Lime Thinking we currently use our own framework LimePickle with some use of elements of Zend Framework.

We started developing our own framework out of out libraries of reusable code back before the emergence of the now ubiquitous PHP frameworks. Despite the arguments for using these over rolling your own, many of them are only applicable if you are starting from scratch. We have been reluctant do jump ship to one of the available frameworks when he have developed a lot of tools for working with our framework. Many of the other frameworks do not meet some of the requirements we place on our own code when it comes to development best practices such as unit testing, dependency injection, minimal usage of static methods and classes such as singletons. Especially whilst we have been able to leverage use of individual Zend Framework components without fully committing to using its controllers, views and models.

So why am I looking at Symfony2? Of interest with Symfony2 is its use of dependency injection, as converts to the benefits of this and having implemented it ourselves we would not want to lose this. Also is its use of Doctrine2 as its Object relational mapper (ORM), Doctrine2 uses a Data Mapper approach to this rather than the typical PHP Framework use of Active Record which is a great step forward. Whilst we have implemented a similar approach with LimePickle, Doctrine2 implements more of the excellent ideas of PoEAA then we currently do. I would like to implement Doctrine2 as the ORM for LimePickle but think the learning curve will probably be shallower if I learn to use it as intended with a Symfony2 project than working out how to integrate with LimePickle

So I intend to create a non production project using Symfony2 and see how it compares to using LimePickle to do so. I may repeat the process with other frameworks as well. Does this mean we plan to move away from LimePickle? We are not ruling out the possibility if Symfony2 proves itself to be excellent. I think at least it will be a good experience in implementing a project in a different way from usual and I will learn some new techniques that can be used to improve LimePickle.