To List,
I'm not happy with the current View implementation. First I'll layout
my criticism, then suggest what I think may be an answer. I realize
this won't make it into the next release or anything like that but, I
would like to know what people think about it
Basically, what I want is for the View to be more like the Controller.
I want it beefier, meatier, able to stand on its own as part of the
MVC. The MVC needs more V. As things stand now, the View has all but
disappeared into the Controller's Action helper. It needs to be brought
out and made a powerful component in its own right.
The viewRenderer should be a plug-in for the View, not the other way
around. The viewRenderer should be to the View, what the router is to
the Front Controller. People could then use a default viewRenderer or
slot in a custom viewRenderer, just as they now can change routers.
The View should be able to host plug-ins like the Front Controller
does. The plug-ins could have methods like preRender, postRender to
allow for such things as selecting skins for the page (preRender) or
running the page through tidy (postRender).
The view should have helpers. In particular, there are two helper
classes worth considering. View_Wrappers and View_Filters. /Wrappers
add to, filters take away./
Suppose you have a row from a database and you only want the 1^st , 3^rd
and 5^th . You might write:
$info = filter(array('1','3','5'), $row);
A wrapper might follow the decorator pattern and do something like this:
$list = wrap('list',$array); // creates an html list out of an array
Wrappers can be chained together.
There are lots of things to be puzzled out, but the above is the gist.
Implementation shouldn't be too hard. Much of the design for plug-ins
and such can come from the Front Controller. Instead of extending the
view class, a new class named Zend_Alternative_View or something could
be used. This way you could use the old View while proto-typing the new
Zend_Alternative_View.
So, what do you say? Could it be ready for Zend 2.0?
Pat.