Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 19-05-2008 14:23:45

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

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

Bonjour à tous,

Je suis en train de développer une application par module et je voulais savoir comment gérer la couche model.
Pour l'instant, j'ai un model unique qui est dispo pour tous les modules.

J'avoue que je n'ai pas encore compris comment optimiser la couche model.

Je comptai mettre dans le model, une classe par base et les appeler selon mais besoin.

Est-ce la bonne solution?

Merci d'avance.

Hors ligne

 

#2 19-05-2008 17:35:47

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

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

deux cas se présente
soit la partie de modèle que gêre le module est propre au module et le le place dans le dossier model du module
soit cette partie de modèle est utilisé ailleur dans l'application et je le place dans le dossier model de l'application.

A+JYT

Hors ligne

 

#3 19-05-2008 17:59:59

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

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

Hello,

Je mets toujours dans le dossier model de l'application, au cas où.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#4 19-05-2008 18:47:28

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

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

mikaelkael => Au cas où quoi?

Personnelement, voici ce que j'ai par exemple dans le fichiers application\models\News.php

Code:

<?php

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

Ensuite dans mon controller je mets dans la fonction init => Zend_Loader::loadClass('News');

Je peux ainsi appeler depuis toutes les actions de mon controller la table news de cette façon : $news = new News();

Est-ce aussi simple que cela? Je fais la même chose pour toutes les autres tables? Y-a-t-il moyen d'optimiser cela ?

En gros, comment gérer la couche model ? (Avec un petit exemple smile )

Hors ligne

 

#5 19-05-2008 19:56:50

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

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

moi je fais comme ça
http://sekaijin.ovh.org/?p=15


A+JYT

Hors ligne

 

#6 19-05-2008 20:25:35

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

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

Hello,

Au cas où j'en aurais besoin plus tard dans un autre module. Chacun de mes modules correspond en gros à une base de données. Chaque module correspond en fait à une application à part entière. C'est d'ailleurs comme cela que j'ai travaillé au début (plusieurs petites applications). Puis avec l'évolution des demandes (recherches croisées), j'ai tout fusionné sous une application. Mes models sont donc positionnés dans /application/models. Chaque module pouvant ainsi interroger toutes les bases.

Mon organisation est la suivante :
- application
  -models
   -base1
    -tablex
   -base2
    -tabley...

Les class de tables sont de la forme :

Code:

<?php

class Base2_Tabley extends Zend_Db_Table
{}

Dans n'importe quelle action de n'importe quel module, je peux faire :

Code:

$retour = $this->base2db->table_tabley->fetchAll();

base2db est trappée dans le __get() du controller qui reconnait une base et charge l'adaptateur en conséquence. table_tabley est trappée dans le __get() de l'adaptateur qui reconnait une table et la charge.

Ainsi mon script ne charge que la(es) base(s) et les tables nécessaires.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#7 19-05-2008 22:19:13

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

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

mikaelkael a écrit:

Dans n'importe quelle action de n'importe quel module, je peux faire :

Code:

$retour = $this->base2db->table_tabley->fetchAll();

base2db est trappée dans le __get() du controller qui reconnait une base et charge l'adaptateur en conséquence. table_tabley est trappée dans le __get() de l'adaptateur qui reconnait une table et la charge.

Ainsi mon script ne charge que la(es) base(s) et les tables nécessaires.

A+

Peux tu expliquer plus précisément cette partie (surtout le "Ainsi mon script ne charge que la(es) base(s) et les tables nécessaires.
"). J'ai du mal à saisir...

Hors ligne

 

#8 20-05-2008 12:59:17

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

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

moi j'écris

Code:

        $this->model->addComponent('Adm_Model_Profile');
        $profiles = $this->model->getProfileList($formData->usr_id);

Hors ligne

 

#9 20-05-2008 14:24:54

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

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

Moi j'écris (peut importe le lieu) :

Code:

$profiles = Doctrine::getTable('profile')->findOneById($formData->usr_id);

----
Gruiiik !

Hors ligne

 

#10 20-05-2008 17:20:25

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

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

Hello,

Je vois que le principe est le même pour tout le monde. Les méthodes sont simplement différentes.

Ainsi mon script ne charge que la(es) base(s) et les tables nécessaires.

Pourquoi chargé un adaptateur, un model ou une table dans un init si ce n'est pas pour l'utiliser ensuite ?
Exemple : ma page d'accueil est ma page de login sans aucun besoin d'accès à une base. Certaines de mes pages sont stockées en cache donc pas besoin d'accès à une base.

Ma principale application est un infocentre qui n'est pas du tout de type CRUD. Je ne fais quasiment que du select. Mes contrôleurs ne sont donc pas désignés du style : createAction, updateAction... Dans ce cas, il est vrai que tu peux passer par l'init puisque toutes tes actions vont avoir besoin de la table.

Cet infocentre se connecte à 12 BDD différentes en fonction de la requête (9 Oracle, 1 MSSQL & 2MySQL). Je ne m'amuse donc pas à charger les 12 adaptateurs par défaut. Ils sont chargés automatiquement si la requête en a besoin.

Cela répond-il à ta question ?

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#11 20-05-2008 22:39:05

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 familiarise avec la POO et ses termes. Qu'appelez vous "charger" ? C'est de faire ceci ?! :

Code:

$news = new News();

(qui instancie une nouvelle classe modèle "news")
Ou c'est peut être plutot de fait de faire ceci :

Code:

Zend_Loader::loadClass('News');

Dans ce cas, je ne vois pas trop comment le faire de façon automatique...

-------------------------------------------

Dans mon cas je fonctionne avec une appli par module.
Est ce que la structure de mon site peut/doit ressembler à cela ?

+ application
----+modules
---------+news
--------------+controller
--------------+views
---------+photos
--------------+controller
--------------+views
----+models (un seul repertoire model pour tous les modules)
---------+model (avec les classes qui me permettent d'accéder à toutes les bases (news, photos etc))
---------+news (avec les fonctions de création de formulaire permettant de traiter les données de news)
---------+photos (idem pour les données de photos)

De cette façon je fait un :

Code:

Zend_Loader::loadClass('model');

dans mon bootstrap, cela m'évite de le mettre dans tous mes controllers et je peux ainsi accéder à toutes mes bases. Je suis sure à 80% qu'il est possible de faire mieux mais je ne vois pas comment le faire sans se prendre la tête :p .

J'attends vos réactions smile ...

[EDIT]

Pour rendre l'exemple plus proche de la réalité, il faut aussi que je puisse me connecter à la base "membres", depuis tous les modules.

Dernière modification par slaughter (21-05-2008 09:37:01)

Hors ligne

 

#12 21-05-2008 09:24:10

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

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

Hello,

Ceci est une instanciation d'objet (pas de classe) :

Code:

$news = new News();

Ceci est un chargement (=load en anglais) de classe :

Code:

Zend_Loader::loadClass('News');  // Le but de ce code est de remplacer include/require

C'est 2 portions de codes sont explicites. Tu as besoin de les appeler pour que ton code fonctionne. La différence avec moi, c'est que je ne les appelle jamais : c'est ce que j'appelle le chargement automatique.

D'après ce que tu écris, tu as au moins 2 bases (news & photos). Quand tu es dans le module news, tu n'as besoin que de la base news. Dans ce cas, c'est vrai que le chargement et l'instanciation explicite sont plus communs. Dans mon cas chacun des 15 modules peut appeler une (ou plus) des 12 bases. Je ne souhaitais donc pas charger explicitement tous les objets.

J'utilise le __get() de PHP :

Code:

class Extension_Controller_Action
{
    public function __get($name)
    {
        if (substr($name,-2)=='db') {
            $this->{$name} = Fonctions::ChargerBase($name);  //ChargerBase fait en gros le chargement de la classe et l'instanciation de l'objet
            return $this->{$name};
        }
    }
}

Et tous mes contrôleurs étendent Extension_Controller_Action :

Code:

class MonController extends Extension_Controller_Action
{}

Même chose pour mes tables mais le __get() est dans mon model.

A+

Dernière modification par mikaelkael (21-05-2008 09:27:30)


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#13 21-05-2008 09:43:28

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

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

Perso, avec les jointures que j'ai, je n'ai pas d'interet à ne pas charger tous mes models.


----
Gruiiik !

Hors ligne

 

#14 21-05-2008 09:57:06

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

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

mikaelkael a écrit:

Hello,

Je vois que le principe est le même pour tout le monde. Les méthodes sont simplement différentes.

Ainsi mon script ne charge que la(es) base(s) et les tables nécessaires.

Pourquoi chargé un adaptateur, un model ou une table dans un init si ce n'est pas pour l'utiliser ensuite ?
A+

c'est justement ce que je fait avec ma façade (l'objet $model)
de dans cet objet je ne place aucun adaptateur aucune table je place juste des méthodes correspondant à une action métier par exemple Calculer Facture
ces méthodes ne porte pas le code métier. mais sélectionne dans la couche métier l'adaptateur, la table, la classe capable de répondre à cette demande.
je regroupe ces méthodes de façon logique (métier) en classes appelée composants

mon contrôleur charge les composants qu'il est susceptible d'utiliser (soit dans le init s'il l'utilise dans toutes les action, doit dans l'action elle-même) à ce moment là aucune table aucun adaptateur aucun code métier n'est chargé.

seul les classe nécessaire à la méthode invoqué sera chargé au premier appel de celui-ci.
dans l'exemple

Code:

        $this->model->addComponent('Adm_Model_Profile');
        $profiles = $this->model->getProfileList($formData->usr_id);

la première ligne permet simplement d'attacher la méthode getProfileList à l'objet model (et quelques autre méthode du composant) aucune classe métier n'est chargée.

à l'invocation de la deuxième ligne le composant va chercher l'objet capable de fournir le service.
s'il s'agit d'un annuaire LDap alors la classe d'accès LDap sera charge s'il s'agit d'une base alors ce sera un adaptateur, etc. bref ce n'est qu'à ce moment là que les classes se charges.

si le contrôleur utilise une autre méthode du model seule les classes manquante seront chargée.

donc au pire si un composant est chargé ce n'est que la définition que quelque méthodes qui ne font aucun traitement qui sont définie, et aucune classes n'est chargée

A+JYT

Hors ligne

 

#15 21-05-2008 10:35:43

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

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

Hello,

Quand je disais ("Je vois que le principe est le même pour tout le monde."), je pensais bien à toi sekaijin.
Je ne suis pas là pour dire que ma méthode est mieux que la tienne. Je suis même certain que la tienne est plus propre smile.

Ce que je veux montrer à slaughter, c'est qu'il faut mieux passer par une de nos méthodes (ou une autre dans le même style) pour charger ces models.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#16 21-05-2008 23:13:52

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

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

Donc d'après ce que vous dites (et en particulier mikaelkael), tu ne charges qu'une seule classe qui se trouve dans le fichier models.php du répertoire application/models dont le contenu est le suivant:

Code:

class Extension_Controller_Action
{
    public function __get($name)
    {
        if (substr($name,-2)=='db') {
            $this->{$name} = Fonctions::ChargerBase($name);  //ChargerBase fait en gros le chargement de la classe et l'instanciation de l'objet
            return $this->{$name};
        }
    }
}

Cette classe te permet de charger les bases à la volé. (j'espere que je n'ai pas faux jusque là)

Mes questions sont :

Concrétement, quel est le principe du __get() ? Si je comprend bien, c'est une sorte de détection d'appel de fonction finissant par "db". Comment ceci est mit en place? Il suffit de charger la classe model.php qui contient le code ci-dessus?
Où se trouve ta fonction ChargerBase ?

Est-ce que je perds vraiment en performance de charger toutes mes bases ? (une quarantaine de bases (mysql))

Est-ce que l'architecture que je vous ai présenté dans mon post précédent vous semble correcte?

Ca fait beaucoup de question et je vous remercie de votre aide.

Dernière modification par slaughter (21-05-2008 23:25:17)

Hors ligne

 

#17 22-05-2008 09:44:27

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

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

Hello,

slaughter a écrit:

Ca fait beaucoup de question et je vous remercie de votre aide.

Ça, c'est pas un problème smile

Reprenons, d'abord par un peu de lecture externe : doc php sur __get()

Ensuite une grossière erreur de ma part t'a perturbé (désolé hmm), notes le "extends Zend_Controller_Action" dans le code suivant :

Code:

class Extension_Controller_Action extends Zend_Controller_Action
{
    public function __get($name)
    {
        if (substr($name,-2)=='db') {
            $this->{$name} = Fonctions::ChargerBase($name);  //ChargerBase fait en gros le chargement de la classe et l'instanciation de l'objet
            return $this->{$name};
        }
    }
}

Ce fichier peut être où tu veux (pour ma part il est dans library) et chacun de mes contrôleurs étendent cette classe :

Code:

class MonController extends Extension_Controller_Action  //au lieu de Zend_Controller_Action
{
    public function affichageAction()
    {
        $this->view->liste = $this->base1db->table_toto->fetchAll();
    }
}

L'arborescence de mon application est :
+ APPLICATION         //MAJUSCULE = dossier & minuscule = fichier
--+MODELS
----+BASE1
------+toto.php
----+base1.php

Le fait d'appeler "$this->base1db" dans mon action va charger le fichier base1.php et instancier l'objet.

slaughter a écrit:

Cette classe te permet de charger les bases à la volé.

Exact.

slaughter a écrit:

quel est le principe du __get() ?

Voir le lien ci-dessus

slaughter a écrit:

Où se trouve ta fonction ChargerBase ?

Dans une librairie stockée dans "application/library" donc dans l'include_path.

slaughter a écrit:

Est-ce que je perds vraiment en performance de charger toutes mes bases ?

En les chargeant explicitement par un new, oui

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#18 22-05-2008 13:55:47

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

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

Tout me semble beaucoup plus clair maintenant. Je testerai ça ce soir (j'aurais surment d'autres questions à venir). Sans vouloir trop abuser, serait-il possible d'avoir un aperçu de ta fonction ChargerBase ? =p

Hors ligne

 

#19 22-05-2008 14:26:01

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

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

Hello,

C'est pas que je veux pas te la filer mais j'ai peur qu'elle t'embrouille, elle fait à peu près ceci :

Code:

function ChargerBase($nom)
{
   $nom = str_replace('db', '', '$nom');
   return new $nom();
}

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#20 22-05-2008 15:01:04

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

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

Bon, je vais encore passer pour l'interminable débuttant.

Actuellement j'ai un répertoire [models] contenant tous mes models. Dans un controlleur, si j'ai besoin d'un model je fais dans le init() $this->table = new Table(); ou bien dés que j'ai besoin d'une table dans une action. De ce fait, je charge que la table en question non ? J'ai du mal à comprendre : si j'ai une seule base, ma méthode de travail reste standard ou à un moment donné je devrais penser à travailler comme vous ?

Si j'ai bien compris ce code

Code:

class Extension_Controller_Action extends Zend_Controller_Action
{
    public function __get($name)
    {
        if (substr($name,-2)=='db') {
            $this->{$name} = Fonctions::ChargerBase($name);  //ChargerBase fait en gros le chargement de la classe et l'instanciation de l'objet
            return $this->{$name};
        }
    }
}

ça te permet 'simplement' à choisir le bon adapteur ? Ce que je ne comprends pas dans cette ligne :

Code:

$this->view->liste = $this->base1db->table_toto->fetchAll();

c'est à quoi correspond 'base1' ? Comment tu fais pour sélectionner une table précise, ici table_toto ? C'est bien dans ChargeBase() que tu sélectionne ton adaptateur et la table ? Ce serait à se moment que tu initialises la table_tot avec la $db correspondante ?

Hors ligne

 

#21 22-05-2008 15:41:46

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

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

Je suis d'accord avec whitespirit. Quelle est l'avantage de faire

Code:

$this->base1db->table_toto->fetchAll()

plutot que :

Code:

$toto = new toto();
$toto->fetchAll();

avec dans ton model application\models\model.php

Code:

class toto extends Zend_Db_Table
{
    protected $_schema = 'base1';
    protected $_name = 'toto';
}

Dans les deux cas, tu ne charges la base qu'au moment où tu l'utilises.

Le fichier model.php contenant les classes des tables étant chargé de toutes façon partout (tous les controllers) et dans tous les cas (de ta façon ou de la manière standard) en faisant :

Code:

Zend_Loader::loadClass('Model');

non?

PS : perso, je pense que je vais avoir une quarantaine de tables. (30 sur la premiere et 10 sur l'autre).

Dernière modification par slaughter (22-05-2008 16:07:40)

Hors ligne

 

#22 22-05-2008 16:07:27

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

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

Hello,

Il faut reprendre mes premiers messages. smile

base1db est trappée dans le __get() du controller qui reconnait une base et charge l'adaptateur en conséquence. table_toto est trappée dans le __get() de l'adaptateur qui reconnait une table et la charge.

Je n'ai montré que le __get() du contrôleur mais il y en a un autre dans base1.php pour charger la table toto.

Code:

class BaseModel               // situé dans /library/...
{
    /**
     * @var Zend_Db_Adapter_Abstract
     */
    protected $db;

    public function __construct()
    {
        //instanciation de $this->db
    }

    /**
     * Ajoute une table en tant que membre public
     *
     * @param string $nom
     * @param array $config
     */
    public function ajouteTable ($nom, $config = array())
    {
        $configdb = $this->db->getConfig();
        $dbname = str_replace('_test', '', $configdb['dbname']);
        $nom = str_replace(' ', '_', ucwords(str_replace('_', ' ', $nom)));
        $classe = ucfirst($dbname) . '_' . $nom;
        $nom_dans_classe = 'table_' . strtolower($nom);
        if (! isset($config['schema'])) {
            if ($this->db instanceof Zend_Db_Adapter_Oracle) {
                $config['schema'] = $configdb['username'];
            } else {
                $config['schema'] = $configdb['dbname'];
            }
        }
        if (! isset($config['name'])) {
            $config['name'] = $nom;
        }
        $config['db'] = $this->db;
        $this->$nom_dans_classe = new $classe($config);

    }

    public function __get ($name)
    {
        if (substr($name, 0, 6) == 'table_') {
            if (isset($this->$name)) {
                return $this->$name;
            } else {
                $this->ajouteTable(substr($name, 6));
                return $this->$name;
            }
        }
    }
}

Code:

class Base1 extends BaseModel  // situé dans /application/models/base1.php
{}

Le fichier model.php contenant les classes des tables étant chargé de toutes façon partout (tous les controllers) et dans tous les cas (de ta façon ou de la manière standard) en faisant

Non c'est justement ce que je ne veux pas. Chacun de mes Base1 ou Base2 ne sera charger que si l'on a appelé.

Code:

$toto = new toto();  
$this->view->toto = $toto->fetchAll();

Ceci ne fonctionne que si tu n'as qu'une seule base et que tu as auparavant fait Zend_Db_Table::setDefaultAdapter($tonAdapter). Ce n'est pas mon cas.

Autre point, plus subtil, je vous l'accorde : si j'utilise Zend_Layout et que j'empile des actions (ActionStack), si je fais : $this->base1db->table_toto->fetchAll() ou find(). Base1 et Toto correspondront aux mêmes instances. Dans ton cas, "$toto = new toto();", tu créeras autant d'instances que de new.

A+

Dernière modification par mikaelkael (22-05-2008 16:12:32)


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#23 23-05-2008 07:47:03

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

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

C'est pour cela que je propose de passer par une façade
(chercher Façade design patter sur le net)

la façade definit des fonction d'accès au modèle qui ne dissent rien de l'implémentation.
getProfileList
getAllCars
cumulTax

etc.

du coup le controlleur n'a pas à savoir dans quelle table quelle base ou même si ça vient d'une base.
getAllToto retourne tous les totos peu importe qi'il ly faille intéroger 46 base 4 LDap et 6 SOAP pour les obtenir

LE modèle d'un e application ce n'est pas la liste de ses tables c'est l'ensemble des objets et des méthodes que l'application manipule.

les table ne sont que la partie sur laquelle s'appuie le modèle pour lire et écrire les données.

si ton application est bien consue tu dois pouvoir changer le modèle de donner de ta base sans changer ton Modèle applicatif tu ne dois avoir à changer que l'interface d'acces au données à savoir les table.

A+JYT

Hors ligne

 

#24 23-05-2008 09:27:16

Bast
Membre
Date d'inscription: 07-06-2007
Messages: 138

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

Mais cette fameuse façade... quelle est sa classe ? De quelle classe du ZF hérite-t-elle ?
D'entrée j'ai envie de dire Zend_Controller_Action, étant donné que dans le MVC, ce sont ces classes qui apellent les tables... mais du coup je ne vois pas trop l'intérêt de la façade hmm

Hors ligne

 

#25 23-05-2008 09:27:43

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

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

Ok, merci à tous les deux, vous donner un coup de boost théorique et pratique dans la conception. Avec vous, le mot 'Architecte' prend tout son sens smile.

J'ai créé une appli de location en utilisant ZF. On aura quelques clients et chaque client aura sa plate-forme indépendante ZF et donc sa base de données. Par la suite, je devrai développer un portail composé d'un moteur de recherche qui récuperera toutes les infos contenu dans les tables des bases. Donc cette "facade" est ce que je dois utiliser de façon primordial dans ce cas précis et créer un moteur de recherche multi-site, multi-base sera évident, c'est bien ç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