Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#26 23-05-2008 15:11:25

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Comment gérez vous la couche model d'une application par module

Non c'est une classe que Zend ne propose pas.

Elle n'érite pas de ZCA car ZCA est faite pour faire un contrôleur or Un controleur n'est pas un modèle.

imagine que tu veuillepublier les fonctionnalité de ton modèle en SOAP tu fait une classe modèle qui définit les méthodes en question et tu l'expose avec UN soap serveur

pour que ça fonctionne il suffit que ce soit une classe pas un controleur une classe simple

Le pattern MVC sert à séparer les traitement entre l'affichage et le modèle le controleur assurant la liaison
le patter façade lui sert à masquer une complexité d'implémentation. il fournit un accès Unique à une semble de fonctionnalité.

les deux combiné te permete de mieux séparer les couche.
en gros la façace c'est l'API de ton modèle quand tu lui demande un user il te donne un user et tu n'a pas à savoir si il a fallut utiliser une base une seule classe ou une multitude
tu as une fonction d'accès et le reste n'a pas d'importance.

si je prend ton exemple avec la méthode __get tu ajoute une fonctionnalité au controleur qui te donne accès à une classe métier

passer par la façade ne te donne pas accès à une ou plusieurs classes métier tu as accès à l'ensemble des fonctionnalité du métier.

l'intérêt est que si tu change d'implémentation tu n'as pas à changer tous les contrôleur qui l'utilise seule la façade est redéfinie.

typepiquement Zend_Auth est une façade d'autentification. tu as une méthode pour savoir si oui ou non l'utilisateur est reconnu.
pour la rendre générique tu est obligé de la configurer mais si tu change de configuration tu ne change pas la méthode d'accès

contrairement à Zend_auth le modèle d'une appli lui est propre il n'y a donc aucune raison de la configurer elle doit elle même tout définir.

tu controleur du coup reprends sont seul rôle de chef d'orquestre il ne demande pas les donnée pour faires des truc avec il demande au modèle de faire le nécessaire et ne fait que donner les résultat à la vue.
le travail du controlleur est le suivant
- lire et filter les infos du client
- demander au modèle de les traiter
- donner les donnée résultante à la vue
- gérer les enchainement.

le reste n'est pas de son ressort il n'a pas à savoir comment est fait la vue ni comment travaille le modèle.
pour la vue Zend $this->view mais ne fourni rien pour le modèle.

A+JYT

Hors ligne

 

#27 01-06-2008 18:31:07

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Comment gérez vous la couche model d'une application par module

Je cherche toujours à trouver le meilleur moyen de créer la couche modèle. Ta méthode, sekaijin, semble bien mais j'ai du mal à la suivre. (Je t'ai d'ailleurs envoyé un mail par la messagerie du z-f).

Je cherche également à comprendre s'il y a un énorme avantage à mettre un façade en place plutôt que de tout regrouper dans le même model.

application\models\Model.php

Code:

<?php

class Model extends Zend_Db_Table
{
   //Je suis obligé de mettre cette calasse pour de pas avoir de message d'erreur
}

//Ensuite je crée chaque classe pour l'accès à chaque base.

class News extends Zend_Db_Table
{
    protected $_name = 'db_news';
}

//etc

Je pense que je vais avoir un total d'environ 40 bases. Est-ce que je vais vraiment avoir un problème de performance ou autre à charger à chaque fois mon Model.php dans tout mon code?

Je ne connait pas trop le fonctionnement de la POO mais je crois que le contenu d'une classe n'est chargé que lorsque l'on appelle cette classe. Donc charger le fichier Model.php ne fait que donner la liste des classes susceptible d'être appelées dans mon code, non?

Je suis nouveau sur le ZF mais je cherche tout de même dès le départ à avoir le code et l'architecture les plus propres possible.

J'attends donc vos réactions...

Hors ligne

 

#28 04-06-2008 15:34:19

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Comment gérez vous la couche model d'une application par module

Je me permet de relancer ce post. Je n'ai pas avancé beaucoup depuis la dernière fois et pour tout dire, je suis un peu en attente d'avis sur la question.

Encore merci d'avance.

Hors ligne

 

#29 04-06-2008 18:31:22

François
Nouveau membre
Lieu: Marseille
Date d'inscription: 03-06-2008
Messages: 2

Re: Comment gérez vous la couche model d'une application par module

Oui, je pense que le fait de recharger tes classes d'accès à la base de données, à chaque fois, va poser un problème au niveau de la performance. Et puis surtout il faut bien comprendre que ce n'est pas nécessaire.

L'avantage de la façade c'est justement, je pense, la performance. Je pense que dans ton cas c'est vraiment utile étant donné que c'est ton model qui va charger les classes dont il à besoin, en fonction de l'action de l'utilisateur.

L'architecture la plus propre est donc l'architecture proposée par Sekaijin.

A+ François!

Dernière modification par François (04-06-2008 18:31:43)

Hors ligne

 

#30 04-06-2008 23:51:32

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Comment gérez vous la couche model d'une application par module

Oki. Je rencontre pas mal de problème pour mettre son architecture en place.
Je n'arrive pas à savoir ce qu'il y a de présent dans les classes "Fast_Model_Component" et "Fast_Controller_Action".

Hors ligne

 

#31 05-06-2008 09:57:01

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Comment gérez vous la couche model d'une application par module

je les ai ajouté dans mon post sur mon blog
A+JYT

Hors ligne

 

#32 06-06-2008 19:44:33

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Comment gérez vous la couche model d'une application par module

Le luxe serait d'avoir l'arborescence, le nom des fichiers et le contenu des fichiers qui sont strictement nécessaire au fonctionnement de la couche modèle.

Dans la doc, tu parles de Fast_Controller_Action et je n'ai pas l'impression que cela sert vraiment à ce que l'on veut apprendre. Il y a pas mal de partie comme ça qui, personnellement mais je ne doit pas être le seul, déroute pas mal.

Dans le post que tu as rajouté, c'est bien de la classe "Fast_Model" que tu parles ou bien plutôt de la classe "Fast_Model_Component" ?

PS : Je ne sais pas si tu as eu mon mail mais ma proposition tient toujours...

Hors ligne

 

#33 07-06-2008 13:59:10

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Comment gérez vous la couche model d'une application par module

mon pb à l'heure actuelle est que j'ai reporté sous ZF de nombreux élément que j'avias dans un ancien framework. J'ai à chaque fois cherché la pertinance de la chose et je l'ai adapté au mieux à ZF. J'ai donc beaucoup de chose plus où moins imbriquée. et surtout NON documenté.
je peu effectivement donner un zip de l'ensemble mais je ne suis pas sur qu'on pourrais l'utiliser directement sans explications. je prends donc les morceaux étape par étapes et je donne sur mon blog les réflexions qui ont mené à cette réalisation.

l'introduction de la classe Fast_Controller_Action est mieux expliqué dans mon article sur "un messager"
L'arborescence est abordée dans un des premier articles de mon blog.
Je n'ai pas beaucoup de temps mais il faut que je reprennes mes articles pour établir des liens entre eux. afin de mieux renvoyer le lecteur sur les sections abordés ailleurs dans le blog.

j'ai rajouté les deux classes "Fast_Model" et "Fast_Model_Component" dans http://sekaijin.ovh.org/?p=15 en commentaire

A+JYT

Hors ligne

 

#34 14-06-2008 00:30:31

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Comment gérez vous la couche model d'une application par module

Juste pour continuer à être convaincu, quel est l'avantage d'utiliser ta classe pour inclure les différents modèles plutot que de faire directement un

Code:

Zend_Loader::loadClass('Modelusers');
Zend_Loader::loadClass('Modelnews');

//etc

dans les controllers qui en ont besoin ?

Hors ligne

 

#35 14-06-2008 00:57:48

Azema
Membre
Lieu: Paris
Date d'inscription: 26-09-2007
Messages: 51
Site web

Re: Comment gérez vous la couche model d'une application par module

Un gain de performance si j'ai bien compris.

Tu ne charges tes modèles que lorsque tu en as besoin, au lieu de tout charger d'un coup et bouffer tes ressources.
Pourquoi charger 10 modèles alors que tu vas en utiliser que 3 ?

Cordialement, Azema.

Hors ligne

 

#36 14-06-2008 11:55:50

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Comment gérez vous la couche model d'une application par module

Oui, je comprends bien, mais si dès le départ, je décide de faire des modèles différents selon les modules de mon application (1 modèle pour mes news, un autre pour mes articles, un autre pour mon forum etc) et que je les charges juste dans les controlleurs qui en ont besoins. Je pense que j'aurai également ce gain de performance non ?

Hors ligne

 

#37 14-06-2008 13:20:12

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Comment gérez vous la couche model d'une application par module

la notion de façade ne sert pas nécessairement à optimiser les perf elle sert à masquer la complexité du modèle

en gros elle offre une api métier sur le modèle les contingence d'implémentation étant masquée.
cela permet surtout d'avoir une grande souplesse d'utilisation puisque l'implémentation peut changer sans influencer l'usage. elle permet aussi la réutilisabilité un même modèle pouvant être utilisé dans plusieurs application puisque il n'y a pas de lien fort entre les deux.

enfin c'est une simplification du codage des contrôleurs. lorsque le contrôleur a besoin de service du modèle il s'adresse toujours au même objet. il n'a aucunement besoin de savoir quel objet instancier pour obtenir le service en question.

http://fr.wikipedia.org/wiki/Fa%C3%A7ad … ception%29

A+

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