I first started looking into PHP frameworks last year, looking at a variety of frameworks including cake, symfony and finally Zend Framework.
When I got around to Zend Framework I was nearly ready to give up in programming with a framework, as I did not have a clear understanding of the MVC style of programming.
When I began looking into it I found, that this is something that when I get used to the different style of coding, could save a valuable amount of time, and allow me to offer features to clients, that previously just would not be cost effective.
The main benefits of using a php framework I have found are as follows:
- Time saving – The amount of time saved by not having to type in complex code in a lot of situations cuts the time of many projects by over 50% in most cases.
- Reuse of code – Many web sites that you develop have common features. Because of the way that each part of the code is separate, you are able to copy over controllers, models and view folders to the next project. An example of this is that in every project that requires a content management system (CMS) we are able to copy across the login system. Something that used to be quite a time consuming process. Now we copy it across, and add the users, and we are set to go.
- Access to services API's – with the way that the web is moving these days, having the ability to twitter, yahoo and Google amongstst others is a great way of expanding a web site with ease.
- Community assistance – There is a large community out there which is always willing to help. When you are proficient with the framework, you can also assist others, which will also improve your coding experience. (Not to mention the warm fuzzy feeling that you get for helping)
- Easy plugin creation – When you have a feature you want to add to the framework, just simply create a plugin, in a directory that you can copy to all your projects. I created a image resizing plugin, which allows me to upload an image and resize it with 3 lines of code. Unbelievable, when you consider how long this would normally take and the best thing is, once I made it, I have this feature available in all future projects. The time saving benefits can be awful.