[TYPO3-ect] Best way to access request parameters from model?

Steffen Kamper steffen at sk-typo3.de
Tue Oct 2 12:53:02 CEST 2007


"Elmar Hinz" <elmar07 at googlemail.com> schrieb im Newsbeitrag 
news:mailman.1.1191308901.20242.typo3-team-extension-coordination at lists.netfielders.de...
> Hello,
>
> after a lot of experience with lib/div and different ways tested, I am 
> still
> not sure what the best way to access parameter data from the model is.
>
> A) Accessing the paramaters directly:
> =====================================
>
> $uid = $_POST[...][...];
> $title = $_POST[...][...];
>
> This is definitly the wrong way.
>
>
> B) Taking parameters from a given request object:
> =================================================
>
> $uid = $this->parameters->get('uid');
> $title = $this->parameters->get('title');
>
> In the controller you just need to do:
>
> $model->parameters = $this->parameters;
>
> Or similar like lib/div currently does
> $model->controller = $this->controller;
>
> and in the model
> $pars = $this->controller->parameters;
> $uid = $pars['uid'];
> $title = $pars['title'];
>
> Advantages:
>
> * There is often no typing in the controller.
> * There is few typing in the model.
> * Unit testing can be done by defining a parameters mock object.
>
> Disadvantages:
>
> * In complex forms you sometimes have to alter the parameters object
>   several time. That works but somehow feels wrong.
> * The model depends on a lib/div like parameters object. It can't be
>   exported to a different environment directly. (It can be preparing
>   a paramtersobject there, which is not that difficult.)
>
>
> B) SPL Style:
> =============
>
> In the controller something like this:
>
> $model->exchangeArray($validator); // Validated parameters in there.
>
> In the model:
>
> $uid = $this['uid'];
> $title = $this['title'];
>
> Advantages:
>
> * Looks smart and is few to type.
> * Unit testing is can be done be feeding a test array or mock object.
>
> Disadvantages:
>
> * Quickly comes to limits  for more complex objects like those having  a
>   a list as result of the query.
>
>
> C) Let's call it traditional:
> =============================
>
> For example with dedicated setter methods:
>
> $model->setUid(...);
> $model->setTitle(...);
> ....
>
> Advantages:
>
> * The objects interface is obvious and self explaining.
> * A high level of security can be reached to check for valid data only.
> * Unit tests are easy to write and to read.
>
> Disadvantages:
>
> * A lot to type.
> * Difficult for autogenration or copy and paste programming.
>
>
>
>
> Please give feedback?
> =====================
>
> There are a lot of different alternatives to do it.
>
> Which one do you personally think the best one?
> What can we learn from other MVC environments here?
> What it the road to take for the beta branch?
>
>
> Regards
>
> Elmar
>
>

B, i think these params belong to controller.

For static - why not the classic way t3lib_div::_GP('par') ?

vg  Steffen 




More information about the TYPO3-team-extension-coordination mailing list