Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 16-07-2009 17:22:29

phifeshaheed
Membre
Date d'inscription: 06-05-2009
Messages: 29

Le Model de ZF et ses Différentes Classes: mapping, models et métiers?

Bonjour

Je suivais pas à pas le tutorial Quickstart du site officiel de ZF et arrivé sur la partie qui me trouble toujours un peu dans ce framework le Model et son semblant d'ORM, je me suis heurté à la façon dont dans cet exemple là, ils mettent en place le model Zend_Db qui se trouvent donc le repertoir models qui lui même comporte un sous repertoire Dbtable, si je comprend bien, quelqu'un serai capable de m'apporter ces lanternes pour que je puisse faire un éclairage sur les classes du model

rep models:
Default_Model_UneTable

Default_Model_UneTableMapper

et
sous rep DbTable:
Default_Model_DbTable_UneTable extends Zend_Db_Table_Abstract


Merci d'avance
Phife

Hors ligne

 

#2 17-07-2009 08:39:48

aelyta1
Membre
Lieu: Rouen
Date d'inscription: 29-06-2009
Messages: 98

Re: Le Model de ZF et ses Différentes Classes: mapping, models et métiers?

Bonjour

Voici quelques explications :

Le fichier UneTable.php, contenant Default_Model_DbTable_UneTable extends Zend_Db_Table_Abstract, et se trouvant dans /models/DbTable, est celui qui fait le lien direct avec la base de données : tu y indiques par des attributs protected le nom de la table, la clé primaire, les dépendances, etc.

Le fichier UneTable.php contenant Default_Model_UneTable, se trouvant dans /models, est ce qui s'apparente à un Bean en Java, c'est à dire ton objet entité avec ses attributs, ses getters et ses setters. Tu peux également y définir d'autres méthodes, par exemple dans le tutoriel Quickstart ils définissent entre autres la méthode save(). Cette méthode contient un appel au Mapper de ta classe bean.

Ton Default_Model_UneTableMapper, dans le repertoire /models aussi, contient le corps des fonctions que tu définis dans ton bean : le bean, dans la méthode save(), fait un appel au Mapper, et c'est le mapper qui va se charger d'effectuer la requete, en définissant la méthode save() de manière précise

Voilà j'espere que c'est assez clair^^
Bon courage


veni, vidi, riendi
Vive les lapins-antilopes !

Hors ligne

 

#3 17-07-2009 09:30:05

phifeshaheed
Membre
Date d'inscription: 06-05-2009
Messages: 29

Re: Le Model de ZF et ses Différentes Classes: mapping, models et métiers?

Merci pour l'explication je trouve cette méthode d'organisation de l'ORM plutot claire et logique je sais qu'il y a autant de façon d'organiser ZendDb que de Dev Zend Fmwk, mais un jour il va falloir que ce Fmwk propose au minimum une organisation standard de cet ORM et je dis bien propose (pour rester dans la philosophie de Zf ) ... Apres libre à chacun des dev individuellement d'organiser ça comme ils veulent voir de mettre un doctrine ou un propel à la place...

Hors ligne

 

#4 17-07-2009 10:38:29

aelyta1
Membre
Lieu: Rouen
Date d'inscription: 29-06-2009
Messages: 98

Re: Le Model de ZF et ses Différentes Classes: mapping, models et métiers?

c'est aussi mon avis, cette architecture permet de ne pas tout mélanger. Apres, proposer des standards ca ne plait pas toujours a tout le monde...


veni, vidi, riendi
Vive les lapins-antilopes !

Hors ligne

 

#5 17-07-2009 10:50:35

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Le Model de ZF et ses Différentes Classes: mapping, models et métiers?

il existe une organisation standard a priori.


----
Gruiiik !

Hors ligne

 

#6 17-07-2009 10:58:25

aelyta1
Membre
Lieu: Rouen
Date d'inscription: 29-06-2009
Messages: 98

Re: Le Model de ZF et ses Différentes Classes: mapping, models et métiers?

nORKy a écrit:

il existe une organisation standard a priori.

laquelle ? car le quickstart ne propose pas la meme architecture que d'autres tutoriaux, certains projets n'utilisent pas de Mapper et codent directement les requetes a la base dans les objets type bean.


veni, vidi, riendi
Vive les lapins-antilopes !

Hors ligne

 

#7 17-07-2009 11:35:52

phifeshaheed
Membre
Date d'inscription: 06-05-2009
Messages: 29

Re: Le Model de ZF et ses Différentes Classes: mapping, models et métiers?

Justement est ce coder les requetes directement dans des objets de type bean voir meme comme dans certains tutoriaux dans les extensions de zend_db_table_abstract est une bonne chose?

La vision du quickstart me parait être bonen parce qu'elle sépare les logiques métiers du mapping etc...

Hors ligne

 

#8 17-07-2009 11:45:09

phifeshaheed
Membre
Date d'inscription: 06-05-2009
Messages: 29

Re: Le Model de ZF et ses Différentes Classes: mapping, models et métiers?

Le seul intéret que je vois à une organisation plus moin standard c'est que réellement d'un projet à l'autre mais aussi d'un tuto à l'autre il y a autant d efaçon d'organiser le model en ZF... je vais adopté la vision du Quickstart pour ma part... meme si dans la pratique pluggé doctrine sur Zf me parait plus aisé, mais ça c'est juste une question d'habitude...

Hors ligne

 

#9 17-07-2009 11:46:13

aelyta1
Membre
Lieu: Rouen
Date d'inscription: 29-06-2009
Messages: 98

Re: Le Model de ZF et ses Différentes Classes: mapping, models et métiers?

A mon avis aussi le principe d'utiliser un Mapper permet de coder plus proprement


veni, vidi, riendi
Vive les lapins-antilopes !

Hors ligne

 

#10 17-07-2009 13:54:42

phifeshaheed
Membre
Date d'inscription: 06-05-2009
Messages: 29

Re: Le Model de ZF et ses Différentes Classes: mapping, models et métiers?

Oui je viens de bien comprendre l'utilité de cette archi du model et je trouve ça logique et propre de coder comme ça...

au passage quelqu'un se plaignait du nombre de ligne dans le mapper et le model métier je crois.... un petit tour dans les classes générés automatiquement par doctrine ou propel ça devrai rasurer

Hors ligne

 

#11 31-07-2009 10:46:33

sphax3d
Membre
Lieu: Calais, France
Date d'inscription: 14-05-2008
Messages: 12
Site web

Re: Le Model de ZF et ses Différentes Classes: mapping, models et métiers?

Personnellement, je ne vois toujours pas pourquoi on devrait coder le fonctionnement du Mapper dans la classe elle même (répétition du même code dans tous les autres Mapper).

Code:

    protected $_dbTable;

    public function setDbTable($dbTable)
    {
        if (is_string($dbTable)) {
            $dbTable = new $dbTable();
        }
        if (!$dbTable instanceof Zend_Db_Table_Abstract) {
            throw new Exception('Invalid table data gateway provided');
        }
        $this->_dbTable = $dbTable;
        return $this;
    }

    public function getDbTable()
    {
        if (null === $this->_dbTable) {
            $this->setDbTable('Default_Model_DbTable_Guestbook');
        }
        return $this->_dbTable;
    }

Comme je l'avais évoqué dans un post sur ce sujet, toute les classes Mapper devrait hériter d'un classe parente qui gère son fonctionnement.

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