[geeklog-devel] MVC package and sample application

Tony Bibbs tony at tonybibbs.com
Sun Mar 23 10:52:07 EST 2003

Blaine Lang wrote:

> Ok - I have the application installed and can see a lot of work was done to
> create these new classes. It initially appears to be a lot more complex and
> you still need to add the template classes which I gather will be the view
> layer.

Yes, this example does not use a template class but in GL2 it would 
without question.  Hopefully you don't see this as too much more 
complex.  Admittedly the base MVC framework (controller.class.php, 
MVC_Base.class.php, etc) can appear to be complicated.  All that us GL2 
developers would need to know, however, is how to build a new controller 
configuration file (which shouldn't be too hard) and then simply build 
the views/models accordingly.

The hardest thing starting is out is understanding object mapping. While 
I don't see a big reason, the command that is typically typed into the 
get string (e.g. http://example.com/?cmd=show) is mapped in the config 
file to a class name (e.g. SaveContact).  Then in the config file you'll 
notice a bunch of _FORWARD objects for a given view or model.  Those 
define all the possible 'next steps' a command can take.  Thus in the 
end of a execute() method you'll see something like "return 'validate'". 
In this case 'validate' is the name of a forward for the current model 
which maps to another command OR does a redirect (doing a redirect for 
forward to another view/model is determined by the _TYPE directive).

I don't like the PHP Array for configuration.  If you look closely I 
have started a config.xml file which I think is easier to read for the 
developers *and* it provides us a way to validate the XML so ensure the 
config file is valid.  I think an XML config file will be more standard 
way of doing configuration but for those who perfer to work with PHP 
isntead, I will rework the array code to some other more intuitive method.

> I recognize there are benefits and re-use via patterns and more OO classes.
> It will just take me a bit to fully understand the architecture and the
> approach. I'm not a JAVA coder or have developed MVC programs before.
> Is this the direction you have in mind for GL2?

Yes, this is the direction I would like to take GL2.  I think the base 
framework will need to change a tad before anything is deemed final but 
the basic MVC framework is one I would really like to use.

> Can you summarize your reasons and benefits you see with this approach vs a
> more standard OO style for the business or model layer with a template
> driven interface for the presentation (view layer) and using data
> abstraction layer.

Actually this represents the approach you just described.  The only 
difference is execution is marshalled by a single object, the 
controller.  Thus if you want to change program flow you need only edit 
the configuration for the controller to forward execution to the proper 
commands or, optionally, redirect to another controller within the 
application (i.e. fowarding control to the admin controller, or the 
Forum controller, etc).  The MVC framework in addition to breaking logic 
into smaller atomic parts for maximum reuse, gaurantees only the code 
needed to process the current request is loaded.

Finally, as we develop the various use cases for a system (i.e. 
saveUser, approveStory, etc) they map directly to views and models in 
this framework so it would be quite easy to send developers off coding 
from those use cases (and requirements of course).

Blaine, I'd encourage you and anybody else to build a simple form that 
does something trivial like, say, adds two numbers together complete 
with validation to get accustomed to this.  As I said I don't want to 
run down a path that the rest of you don't agree with so it is important 
to me that I get a 'yea' or 'nay' from you all.

|Tony Bibbs         |[R]egardless of what you may think of our penal   |
|tony at tonybibbs.com |system, the fact is that every man in jail is one |
|                   |less potential fisherman to clutter up your       |
|                   |favorite pool or pond. --Ed Zern                  | 


More information about the geeklog-devel mailing list