What, another PHP application framework… well yes… Let me give some background first.

I started web development in PHP way back during my post-graduation. My first PHP project was my personal website (initially http://rahulsingla.info later enhanced and moved to the current domain http://rahulsingla.com). I have always been a fan of Object Oriented approach than the typical procedural approach of C or PHP. In my first PHP project itself, I created classes for data access exactly on the lines of ADO.NET (the .NET’s data access component). It’s always been my way of development, creating re-usable classes and frameworks for myself while working on any platform, that I can continue using for subsequent projects on the same platform.

I really didn’t get a chance to continue working with PHP after I finished the personal website. Rather I jumped whole-time to .NET and other Windows-based technologies as I found myself working on enterprise line-of-business applications.

Finally I got the chance of getting back to PHP towards the end of my post-graduation. But I was occupied with enough things at that time, to think of writing a PHP application from scratch, and rather embraced established CMSes for my PHP projects, with Drupal 6.x being the choice most of the time. Later I did some development in WordPress and in Zend Framework too.

But off-late, I have been getting small-to-medium scale projects in PHP, that were not really suitable to be approached through a CMS. Rather the projects were mostly for intranet or internet consumption providing some value to the organization they were meant for.

For these projects, I was in two minds, whether to go for established PHP application frameworks (with Zend Framework, and CakePHP being the obvious candidates), or to create something custom.

Time constraints and my design goals led me to opt for custom development.

I will discuss the design goals leading to opting for custom development in the next blog post, stay tuned…

UPDATE: Here are the successive blog posts for the PHOOP framework: