I've been developing an open source MVC framework in PHP and it's going OK. However, I 
wanted to find out about any other frameworks around the place that do a similar 
thing. I want to see how other people approach this design pattern.

Here are my main aims:
1) standardise development patterns so it is easier to understand other people's code
2) standardise repository/library building so that applications scale features 
(modules) in an organised manner.
3) provide a central point of configuration to make porting and deploying applications 
to different environments less painful.
4) provide a standardised way of abstracting interface design from content generation.
5) provide a consistent approach to exception handling
6) provide a consistent approach to content delivery and make it easier to solve 
cross-platform user agent issues.
7) KISS (keep it simple stupid)

and corresponding Objectives:
1a) enforce a 100% OO approach to application design using inheritence (implemented 
object factories). The modularisation of an application should be restricted to class 
definitions. So the only include() statements should be at the top of a class 
definition which includes other classes.
1b) promote the usage of PHPdoc and documentation in general
2) Establish a convention for the naming and storage of packages and class definitions 
so that someone can unzip a package into the tree and use it out-of-the-box (through 
the URL)
3) use one script as a single point of access which can control configuration 
settings. Instead of every script needing o include a particular configuration file, 
one file (with the configuration) will invoke and pass-through every script (class 
definition).
4) the MVC should assume output is in XML (content centric) and provide standard 
mechanisms for passing it on to display processors (such as XSLT processors). shuch 
mechanisms will include conventions for declaring and locating templates (XSL files).
5) utilise the custom error handling capabilities of PHP to raise and handle 
exceptions in an organised way.
6) <see point 4>. Also, the controller should help the developer make decisions on how 
to process the output based on user agents or other conditions.
7) the only thing a backend developer need worry about is returning XML output from 
her/his "external" method. The only thing a GUI developer need worry about is where to 
put their XSL templates.

At the moment, I'm not considdering performance (shock, horror). Of utmost importance 
is make the life of a developer much easier in both short and long-term (when the 
codebase gets really big). Once the model has stabilised, I can tweak it without 
compromising the useablity for developers. The model may include provisions for a 
distributed implementation. It already has provisions for content caching (XML) and 
may be extended to include output caching (post XSLT). As it happens, the controller 
is actually written procedurally for reasons I won't go into at this point (this may 
change).

Other offerings:

I have checked out fusebox (FB) (which was initially designed for ColdFusion (CF) but 
is also available in PHP). It was interesting to see that FB was very similar, in the 
way methods (or "fuse actions") are called, to how I do it. However, I'm not a big fan 
of FB for PHP since I like to use an OO methodology. FB is good for CF though.
http://www.fusebox.org/

And I am about to check out Krysalis which looks to be quite comprehensive.
http://www.interakt.ro/products/Krysalis/index.php

Depending on my progress, I will be posting something on my website under the 
"projects" heading.

here's a nice gentle introduction to MVC
http://www.newarchitectmag.com/documents/s=2412/new1020217692284/index.html

Once again, if anyone can point me to other existing examples, please point :)

Credit where credit is due: I should mention that one of the things that inspired me 
in the first place was 
http://dcl.sourceforge.net/docs/developers/dcl_developer.html
This is a very cool tool. I type of CRM I guess.

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to