Packt Publishing approached me to review their new Symfony book in exchange for a free digital copy of it. The book is titled “Symfony 1.3 Web Application Development” and is written by Tim Bowler and Wojciech Bancer.
I was excited when offered to review this title because I felt that here was my chance to get a glimpse at the new Symfony release in the complete top to bottom way. After reading the book I was somewhat let down since it became apparent to me that I was not the target audience of the book but rather the book was written for people only considering to start developing with Symfony. In it's own way the book is rather interesting and I do not feel that I wasted my time reading it.
I think that a more fitting title for the book would be “Introduction to Symfony”. The current title is somewhat misleading in a sense that it implies that the book will showcase things that are specific to Symfony's 1.3 release. This is not the case and since there aren't that many things that changed between versions 1.2 and 1.3, a whole book on this subject is hardly justified.
It could be said that the book might be a good introduction that covers Symfony versions 1.2 through 1.4 as they are essentially the same with only minor differences. The differences exist however and sadly the book almost never mentions what changed between versions 1.2 and 1.3.
As an introduction the book does a great job of highlighting the basic Symfony functionality. The book covers a lot of ground but does not go very deep into any single topic. This is great for the beginners or for people who are “on the fence” but if you have even a moderate amount of experience in Symfony my feeling is that you won't find anything new here. The book requires a decent understanding of PHP and it's Object Oriented capabilities.
Being aimed at Symfony beginners the book cover basics very thoroughly. Sometimes it presents a way to do things that is different from the default Symfony approach. For example instead of using the default Symfony 1.3 ORM the book uses Propel which was the default ORM for a previous release. Another example is that the model schema is done using Propel's native XML format instead of Symfony's YAML approach.
This book is written as a step by step tutorial on how to build a website for a company that makes milkshakes. In my opinion any book that claims to be more then an introduction should not use a tutorial format because it only shows one approach to solving a specific problem. The milkshake application is a very basic one and hence a very fitting choice in order to show off the ease with which web applications are developed in Symfony. All throughout the book the application evolves and the ease of refactoring becomes apparent very fast.
Every Symfony related book will inevitably be compared to the “Practical symfony” by the lead developer of the framework Fabien Potencier. Although both books are essentially a tutorial of building a Symfony web application they are very different in their approach. “Practical symfony” goes into considerably more detail and a scope of it is somewhat wider but in my opinion it makes the book less accessible. What makes it great for developers already working with Symfony may not be so great for the beginners. On the other hand “Symfony 1.3 Web Application Development” showcases many of Symfony's features in a very accessible if not very comprehensive manner.
The part I liked the best was in chapter 4 where the author explains step by step how to package an existing application module as a plug-in. This is something I was thinking about doing myself for a while, but never found a complete solution for. Another part that might be helpful for a more advanced user is in chapter 9 where the authors show how to integrate memcached into Symfony application.
The book has some problems. There are some typos and even grammar errors and for some reason authors use inline CSS styles a lot which makes the template code very messy and hard to read. There are some topics that the book mentions in passing although they deserve much more attention. For example form filters in admin generator are barely mentioned. Zend Framework integration and Symfony mixins are present in the table of contents but are barely discussed.
In conclusion I think that the book is best suited for someone who wants to figure out if Symfony is suited for his web-development needs. The book is by no means perfect but it offers a very friendly and thorough explanation of the basics of application development with Symfony framework.
“Symfony 1.3 Web Application Development” at Pack Publishing.
Read the table of contents.
Download the code.
Read the sample chapters: