Pierre,
I think you are making a case that people are misusing the MVC name
rather than including Drupal in the misuse.
On Dec 11, 2009, at 11:03 AM, Pierre Rineau wrote:
On Fri, 2009-12-11 at 10:40 -0600, [email protected] wrote:
The defining attribute of MVC is, IMO, that the View component has
direct access to the Model component using an observer relationship,
without going through a separate Controller.
hook_page_alter() is in no way a direct observer relationship between
the View component and the Model component. *_alter hooks are a
pipes-and-filter approach, or, arguably, visitor pattern.
Drupal is very much not an MVC design. It's not true PAC either,
but I
have and do argue that it is closer to PAC than MVC.
Someone needs to correct the Wikipedia page, which is simply wrong in
this regard.
--Larry Garfield
If you want to stick to strict MVC definition, yes Drupal is not,
but in
the most software I saw or developed with until now, not anyone had a
real MVC implementation.
In MVC, this Controller -> Model -> View (data flow)
In Drupal, data flow is:
- Controller (menu router) -> Model (menu callback, module code)
(direct association)
- Model (indirect association through the theme() calls) -> View
- View -> Controller (indirect association, through user clicks)
This is an incomplete and simple (without the observer/observable
pattern) implementation, but I think it does sticks to MVC pattern.
This is an opinion, I think it can be discussed.
Hook system is a different pattern used for different goals, mostly
used
to alter data (it does not alter the behavior I described upper,
except
maybe in some really weird cases).
Pierre.
Event if observer pattern is not really here, I think it sticks to MVC
pattern.