Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 29-11-2012 11:02:50

cbel29
Nouveau membre
Date d'inscription: 29-11-2012
Messages: 1

Architecture du Model Zend

Bonjour,

Si l'on suit le "Quick Start" de Zend (1.xx), on voit que le Model Mapper est appelé depuis le controller.
J'avais lu l'objection que cet appel n'était pas légitime, le controller ne devant se préoccuper que du Model et pas du Mapper. Qu'en pensent les pros de l'architecture ?

Posted by: Karim Ahmed on: 2010-03-14 18:56:57
In this example you have exposed the data mapper to the controller but surely the controller should only need to be aware of the model and it's interfaces?

The mapper should handle communication between the model and the database and NOT the controller and the database.

i.e. The code should read:

Code:

    $comment = new Application_Model_Guestbook($form->getValues());
    $comment->save();

INSTEAD OF:

Code:

$comment = new Application_Model_Guestbook($form->getValues());
    $mapper = new Application_Model_GuestbookMapper();
    $mapper->save($comment);

La réponse qui suit me paraît convaincante mais j'aimerais avoir des confirmations

Posted by: Plamena Marinova on: 2010-03-23 19:29:30
@Karim Yes, you are right about this. But there are a few things that are missed in the tutorial in order to achieve this.

The Application_Model_Guestbook class should have a protected $_mapper property, set and get methods for the mapper.

Code:

public function setMapper($mapper)
{
$this->_mapper = $mapper;
return $this;
}

public function getMapper()
{
if (null === $this->_mapper) {
$this->setMapper(new Application_Model_GuestbookMapper());
}
return $this->_mapper;
}

public function save()
{
$this->getMapper()->save($this);
}

Merci

Hors ligne

 

#2 29-11-2012 12:23:43

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: Architecture du Model Zend

Bonjour,

En effet, plusieurs théories s'affrontent sur ce point, avec soit l'utilisation de mappers qui doivent être appelés par les modèles, soit directement de modèles qui réalisent directement l'accès à la BD comme on pouvait avoir dans ZF1.

L'idée d'avoir à la fois mapper en accès direct et modèle me semble étrange...

Concernant la réponse, je comprends l'attribut mapper et le setter éventuellement, mais je ne vois pas l'intérêt du getter public... Pour moi on ne mets pas de getter étant donné que le modèle devrait être le seul à utiliser le mapper...

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages