Funnily enough, I have been working on a framework for a while, and went along to an Agile event last night which was a lot to do with ensuring that you have an audience first (as well as leading with new ideas etc), without getting too far down the road. Our dev team is using this framework and find it useful for our development, this project was to open it up and make it public.
This is embarrassing, last year I chose the name ‘Aloi’ as the framework (http://aloi-project.org). I have been working on amalgamates different technologies such as struts, servlet, rails etc with php models/services orm doctrine, propel to make something which had strengths from each (hence the name, a play on alloy). A benefit was to allow other developers from different technologies a comfortable environment, while providing PHP some of the framework concepts and patterns that exist in enterprise. The framework is layered, and tries to promote different patterns to be implemented (MVC, eventually MVVM, PAC etc) built on-top of a host which provides the standard object oriented request/response and filters/interceptor chains, as well as routing functions.
I really wanted to have a layered architecture that promoted modular reuse as well a way to couple together different smaller components or different patterns side-by-side. A simple hello world not invoking full MVC unless it needed to, or an image resizer being a lean component to be co-existing beside a larger MVC framework. I also feel that there was a need for a basic trivial set of ‘request/response’ handlers that could connect the object oriented world to PHP, and perform filters before stuff is executed and after (such as implementing a central security, or error/exception handling across the app etc). By providing these basic set of features it could promote different application frameworks to be built ontop of this base layer, that could immediately benefit from handling the basic HTTP management (such as doGet/doPost/doXX interfaces) and URL management allowing applications to own parts of the request. People could develop filters that would do things like security, or compression, etc that could be reused between applications and attached to parts of your framework. You could then develop and structure your PHP OO application using whichever patterns your prefer, with that base underlying set of features taken care of.
We have also been using a struts like implementation which allowed us to develop complex use cases and build applications that have been really flexible yet organised. There is a bunch of books relating to the framework, and it is still in my opinion a very good framework (but needs some modern structures brought int), but in Java you need specialised hosting, issues of deployment, etc which PHP doesn’t really have (and although PHP is not Java, Java has a lot of stuff it can suggest to PHP and vice-versa). Aloi provides “phruts” which is a PHP implementation of struts (working to 1.3 feature complete). Aloi is furthering this and bringing newer cool lightweight ways of approaching these projects, making development faster, while still allowing developers a path to build larger applications where different features people can grow into. It is very pluggable, it can be run with controller configuration or wildcard controller mapping style URL/request to app/module/controller/action.
I guess what I am looking for is what favourite features people use in their current framework - not for a feature list that I should develop - just wanting to find out what people find most valuable about frameworks they use. This will help me understand more about what people find important for developing documentation or code.
(also, anyone know of a good name for the project? - thanks Czaries)
Thanks for peoples feedback so far.