Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 05-03-2010 12:37:33

armetiz
Membre
Lieu: Lyon
Date d'inscription: 26-02-2010
Messages: 53
Site web

Organisation logique, acces aux données et logiques métiers

Bonjour,
Je suis un utilisateur de PHP depuis plusieurs années, mais je suis débutant avec le Framework de Zend.
J'utilise la version 1.10.

Mon soucis se situe au niveau de l'organisation, je ne sais pas où mettre mes logiques métiers..

Actuellement, je dispose de Model, de Mapper, de DbTable ainsi que de Service et des Controllers.
Je résume ce que j'ai compris :
- DbTable : Persistance des données, accès à la BDD.
- Mapper : Accès à la couche de persistance des données, actuellement mes DbTable, objet qui remplit les Model de données concrètes.
- Model : Représentation de l'objet. Peu de logique métier.

- Service : Fournit des accès à des Models spécifiques en fonction de certain critère. Utile pour les Controllers, les service SOAP etc...
- Contrôleurs : Répartiteur des demandes utilisateurs..

Mon soucis ce situe surtout avec les Service, Model, Mapper et DbTable.
Je ne sais jamais - de manière correct - où mettre une fonction de recherche;
Exemple pour mes Items qui contiennent un attribut Titre, il faut permettre la recherche par Titre.

Il faut faire une fonction dans Service searchByTitle, qui va appeler la fonction searchByTitle sur le Mapper_Item, qui lui même va appeler searchByTitle sur le DbTable_Item ? Est-ce la bonne manière de faire ?

Il existe au sein de ma structure de BDD des associations 1-1 et N-N, sachant que nous utilisons Zend principalement pour réaliser un front en Flash, nous souhaitons à partir d'un objet connaitre ses relations sans avoir à faire de nombreux allers/retours.
Pour des raisons de performance, nous ne pouvons pas faire de full-loading, nous avons donc limité le chargement des dépendances par "rayon".
Actuellement, nous chargeons les dépendances dans le Mapper lorsqu'il s'agit de remplir notre Model_Item.

Exemple
getItem (2);
$rowItem = loadRowSet ("item_id = 2");
createModelItem ($rowItem)
{
    $oModelItem = new Model_Item ();
    $oModelItem->title = $rowItem["item"];
    $oModelItem->parent = new Model_ItemParent ();
    $oModelItem->parent->findId ($rowItem["item_parent_id"]);
    return $oModelItem;
}


Actuellement, cela fonctionne, mais j'ai un doute sur la cohérence de ce que je fais.
De plus, dans cette manière de faire, il y a de nombreux appels à la base de données qui pourrai être évités par de jolies jointures SQL.
Le soucis, c'est où appeler ces requêtes SQL pour faire de jolie jointure, et surtout à partir de quoi ? (Mapper, Model, Service ?)
Pour finir là, il me semble qu'il n'est pas logique que les Service accède au DbTable ni au Mapper directement.

Bref, vous l'aurez compris, je suis un peu embrouillé par le manque de structure.
Connaissez-vous un livre qui soit capable de m'orienter correctement ? Zend ou autre livre d'archi ?

Merci à vous,
Thomas.

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