Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#26 23-09-2009 14:58:01

dorian53
Membre
Date d'inscription: 08-03-2009
Messages: 41

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

Tout est relatif. Clairment oui c'est se compliquer un peu plus au départ mais il faut voir à long terme, cela permet de ne pas être dépendant de Doctrine :
- au niveau de sa pérennité, si demain le projet meurt,
- au niveau de ses bench, si demain Zend ou autre sort un ORM beaucoup plus puissant ou tout simplement que l'on souhaite retravailler avec l'adaptateur natif.
Et si l'une des deux situations arrive alors on aura prévu une maintenance et évolution plus souple, on se sera finalement simplifier le travail.

On peut aussi défendre l'idée que c'est sans fin. Abstraire totalement PHP au niveau le plus bas, simpleXML, PDO & Co, faire des sur-couches sur les composants de Zend_ pendant qu'on y est ? C'est vrai on ne sait jamais ce que va devenir le langage.
Faut peser le pour et le contre.

J'attends le retour de Delprog pour savoir si j'utilise des DAO persos ou pas.

Il faut aussi avouer qu'il y a une grande part de fun, d'auto-satisfaction à coder toujours plus loin smile
J'ai beaucoup appris en 2/3 jours avec ce topic grâce à ceux qui ont participé. Aussi bien sur les concepts que sur la mise en oeuvre.

Dernière modification par dorian53 (23-09-2009 15:05:45)

Hors ligne

 

#27 23-09-2009 15:26:51

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

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

pour moi, c'est poussé le bouchon trop loin.
Dans ce cas, autant que je rajoute une couche sur le ZF au cas ou je veuille passé à symfonie ou autre framework...

Apprendre déjà à connaitre toutes les possibilités de Doctrine, ca déjà un grosse satisfaction. Comprendre le fonctionne du code encore plus..

Je trouve que Doctrine fournis tous les composants nécessaires et la version 2.0 en developpement sera différente mais toute aussi bien fournie.

Si tu veux codé, tu peux éventuellement créé la liasion Zend_Tool => Doctrine_Task


----
Gruiiik !

Hors ligne

 

#28 23-09-2009 15:45:23

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

Le nom d'une propriété ne commence jamais par une majuscule, convention smile

Donc pour moi c'est "Model_Profil" pour la classe, et "profil" (et non pas Profil) pour la propriété dans un objet "Model_User" qui attend un "Model_Profil". Encore une fois c'est un propriété et pas une classe dont on parle.

Je ne me complique pas la vie, j'applique des concepts qui assure une bonne pérennité de l'application. Ce ne sont pas des choses que j'invente, ce sont des patterns éprouvés et solides.

Tout dépend de la dimension du projet. Ici je parle de projet "lourd".


@Dorian

J'utilise directement le résultat des requêtes qui sont des Doctrine_Record ou des collections. Je n'utilise tout simplement pas des méthodes de ces objets dans mes controlleurs qui n'existeraient pas dans de véritables objets métiers.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#29 23-09-2009 15:47:31

dorian53
Membre
Date d'inscription: 08-03-2009
Messages: 41

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

nORKy a écrit:

Dans ce cas, autant que je rajoute une couche sur le ZF au cas ou je veuille passé à symfonie ou autre framework...

Les grands esprits se rencontrent smile

dorian53 a écrit:

On peut aussi défendre l'idée que c'est sans fin. Abstraire totalement PHP au niveau le plus bas, simpleXML, PDO & Co, faire des sur-couches sur les composants de Zend_ pendant qu'on y est ? C'est vrai on ne sait jamais ce que va devenir le langage.
Faut peser le pour et le contre.

J'attends sa réponse par curiosité mais je vais également faire sans "DAO de DAO".
Très constructif en tout cas ce topic.

Hors ligne

 

#30 23-09-2009 15:50:27

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

L'efficacité des patterns n'est plus à prouver. Il ne s'agit pas seulement de se protéger dans le cas d'un changement de techno, mais aussi, et surtout je dirais, de permettre une bonne maintenabilité de l'application.

Quand il y a une grosse équipe, sur un gros projet, c'est difficile de faire autrement. Si tu fais tout dans les controlleurs, c'est inbuvable.

J'ai moi même des petits projets dans lesquels j'utilise Zend_Db directement dans les controlleurs. Tout dépend de ce que l'on fait smile

A+ benjamin.

Dernière modification par Delprog (23-09-2009 15:52:43)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#31 23-09-2009 16:23:23

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

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

Delprog a écrit:

Quand il y a une grosse équipe, sur un gros projet, c'est difficile de faire autrement. Si tu fais tout dans les controlleurs, c'est inbuvable.

A+ benjamin.

Je ne fais pas ca dans mes controlleurs.


----
Gruiiik !

Hors ligne

 

#32 24-09-2009 02:12:52

lesauf
Membre
Lieu: Yaoundé - Cameroun
Date d'inscription: 29-11-2007
Messages: 52
Site web

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

Delprog a écrit:

J'utilise directement le résultat des requêtes qui sont des Doctrine_Record ou des collections. Je n'utilise tout simplement pas des méthodes de ces objets dans mes controlleurs qui n'existeraient pas dans de véritables objets métiers.

Delprog a écrit:

Même pas de save ou de link. De même je n'utilise jamais les tables générées par Doctrine directement. J'ai des services (consommé par mes controlleurs) qui passent par des DAO qui eux utilisent ces tables et les fonctionnalités de Doctrine à volonté.

Comme ça, si je change, je ne ré-écris rien dans mes controlleurs ni mes services, seulement mes DAO. A condition que je ré-utilise des objets métiers construits à l'identique bien sûr.

Dis, tu pourrais pas nous montrer quelques petits bouts de code? (Chuis paresseux). Par exemple comment tu save() tes objets métiers. Tu as implémenté un mapper sur les objets de Doctrine? (j'y ai pensé, mais j'hésite).

Merci.
Lesauf

Hors ligne

 

#33 24-09-2009 11:14:14

booradley
Membre
Date d'inscription: 10-01-2009
Messages: 163

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

Delprog a écrit:

nORKy a écrit:

A mon avis, Delprog à "buggué" en écrivant Model_User. Soit tu préfix tous, soit tu ne le fais pas.

smile

Non je n'ai pas "buggé", j'ai décidé de conserver les conventions Pear. Les noms de mes classes générées par Doctrine sont donc fonction de leur emplacement dans l'arbo. Ici dossiers models/ qui dans ZF correspondant au namespace "Model_".

Il ne faut aussi pas confondre model et propriété. En faisant:

Code:

$user = new Model_User();
$user->profil->name = 'name';

Il ne s'agit pas d'accéder au model Model_Profil mais bel est bien à la propriété "profil" qui contient un Model_Profil, ce n'est pas la même chose. Si tu regardes bien mon yaml, j'ai forcé le nom des propriétés et défini explicitement le nom de la classe correspondante pour ne pas me retrouver avec des $user->Profil mais $user->profil.

Doctrine c'est bien, mais il faut quand même bien réfléchir à séparer la logique de la persistance pour ne pas se retrouver coincé un jour.

Pour ce qui est de la génération des classes, ce n'est pas encore parfaitement au point, pas mal de choses seront corrigées avec la version 1.2 je pense.


Enfin pour mon exemple de requête, je ne fais pas comme tu proposes nORKy car je passe par des DAO. Bien que je pourrais faire:

Code:

Doctrine::getTable('Model_User')->createQuery('u');
// etc...

Mais je ne vois pas vraiment l'intérêt, le DQL est justement puissant car il permet de ne manipuler que les objets.


A+ benjamin.

Juste histoire de faire retomber l'ambiance, pouvez vous me donner votre méthode pour charger les models Doctrine générés.
Que ce soit avec un prefixe (Model_) ou non.
Tout ce que je veux c'est ne pas avoir à renommer les fichiers ou les noms des classe générées.

Exemple: J'ai une table t_user.
Depuis le fichier yaml, les classes suivantes sont générées :
/models/User.php
/models/UserTable.php
/models/generated/BaseUser.php

Je ne veux pas utiliser le Doctrine::loadModels($doctrineConfig['models_path']); car cette instruction est exécutée en 18s (sur 20s au total pour charger la page)!!!
Je veux donc que Zend gère le chargement soit via l'autoloader soit autrement.
Le pb est que le nom des classes générées par Doctrine ne contient aucun préfixe et semble donc incompatible avec la méthode de chargement de Zend.

Initialement je voulais générer chaque classe dans son module zend associé, mais au vu de ce pb, j'y ai renoncé.
On trouve quelques exemple sur google mais souvent incomplets ou obscurs.
J'aimerais bien avoir l'avis de nORKy et Delprog, les 2 experts de ce forum dont les avis différents sont très utiles pour avancer.

Hors ligne

 

#34 24-09-2009 11:18:36

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

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

18s pour chargé tes models ?!!! T'as un soucis.. T'es en agressive ou conservative ?

Code:

$manager->setAttribute(Doctrine::ATTR_MODEL_LOADING, Doctrine::MODEL_LOADING_CONSERVATIVE);
echo time()."\n";
Doctrine::loadModels($doctrine_opt['models_path']);
echo time(); die();

Code:

1253783841
1253783841

----
Gruiiik !

Hors ligne

 

#35 24-09-2009 11:24:21

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

Re: [Zend_Db 1.9] Finalement ce sera Doctrine


----
Gruiiik !

Hors ligne

 

#36 24-09-2009 11:25:50

dorian53
Membre
Date d'inscription: 08-03-2009
Messages: 41

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

booradley a écrit:

Le pb est que le nom des classes générées par Doctrine ne contient aucun préfixe et semble donc incompatible avec la méthode de chargement de Zend.

Regarde plus haut dans le topic la réponse a été donnée.

Code:

Doctrine::generateModelsFromYaml('temp.yml', 'models',
    array('classPrefixFiles' => true,
            'classPrefix' => 'Orm_',
            'baseClassPrefix' => 'Entity_',
            'baseClassesDirectory' => 'Entity'));

Hors ligne

 

#37 24-09-2009 11:32:10

booradley
Membre
Date d'inscription: 10-01-2009
Messages: 163

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

Oui j'ai 37 tables ce qui me donne 111 classes générées.

Code:

$manager = Doctrine_Manager::getInstance();
    $manager->setAttribute(Doctrine::ATTR_AUTO_ACCESSOR_OVERRIDE, true);
    $manager->setAttribute(Doctrine::ATTR_AUTOLOAD_TABLE_CLASSES, true);
    $manager->setAttribute(
        Doctrine::ATTR_MODEL_LOADING,
        Doctrine::MODEL_LOADING_CONSERVATIVE
    );
echo time()."\n";
    // Add models and generated base classes to Doctrine autoloader
    Doctrine::loadModels($doctrineConfig['models_path']);
echo time()."\n";

1253784259
1253784266

Je sais pas ce qui se passe on dirait que c'est plus rapide mais c'est pas encore ca.

Hors ligne

 

#38 24-09-2009 11:40:06

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

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

Je ne pense pas que ca soit Doctrine ou l'autolader du ZF qui changera qqchose.

Car, un include, c'est toujours un include que ca soit avec Doctrine, ou le ZF.
Le ZF remplace les _ par des /, Doctrine lui met en cache (via loadmodels) les chemins des fichiers. L'un ou l'autre pour moi, c'est pareil, ca prends qq mms pour trouvé le fichier demandé.

En conservative, Doctrine ne fait que mettre en cache les chemins, il n'inclus rien.

Faudrait vraiment détails tous les temps passé par ton application pour voir ou sa galerre


----
Gruiiik !

Hors ligne

 

#39 24-09-2009 11:53:29

booradley
Membre
Date d'inscription: 10-01-2009
Messages: 163

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

C'est bizarre sans Doctrine, ma page se charge totalement en 1.8s donc je pense pas qu'il y ait un soucis quelconque avec mon appli.

Hors ligne

 

#40 24-09-2009 12:18:25

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

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

Profile ton application pour voir ou sa cloche

Dernière modification par nORKy (24-09-2009 12:18:33)


----
Gruiiik !

Hors ligne

 

#41 24-09-2009 14:33:12

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

lesauf a écrit:

Dis, tu pourrais pas nous montrer quelques petits bouts de code? (Chuis paresseux). Par exemple comment tu save() tes objets métiers. Tu as implémenté un mapper sur les objets de Doctrine? (j'y ai pensé, mais j'hésite).

Merci.
Lesauf

Salut,

Non je n'ai pas implémenté de mapper. Simplement des DAO tout ce qu'il y a de plus basique.

Par exemple, imaginons l'inscription d'un user:

Controller:

Code:

<?php
/**
 * Controller pour l'inscription
 */
class Sign_IndexController extends Tight_Controller_Action
{
    /**     
     * @var Service_User
     */
    private $_userService;

    /**     
     * @var Service_Mail
     */
    private $_mailService;

    public function setUserService(Service_User $userService)
    {
        $this->_userService = $userService;
        return $this;
    }

    public function setMailService(Service_Mail $mailService)
    {
        $this->_mailService = $mailService;
        return $this;
    }

    public function showFormAction()
    {
        // .... affichage du formulaire
    }

    public function performAction()
    {
        //.... validation formulaire
        //.... recuperation array $data filtré et validé
        $user = new Model_User();            
        $user->fromArray($data);
        $user->password = md5($data['password']);

        if (false !== $this->_userService->saveOrUpdate($user)) {
            $this->_mailService->sendActivationMail($user);
        }
        // envoi réponse à la vue        
    }
}

Service

Code:

<?php
class Service_User extends Tight_Service_Service implements Service_Generic_IUser
{
    /**     
     * @var Model_Dao_User
     */
    private $_userDAO;

    public function setUserDAO(Model_Dao_User $userDAO)
    {
        $this->_userDAO = $userDAO;
        return $this;
    }

    /**
     * Save user
     * @param Model_User $user
     * @return boolean
     */
    public function saveOrUpdate(Model_User $user)
    {        
        return $this->_userDAO->saveOrUpdate($user);       
    }
}

Dao

Code:

<?php
class Model_Dao_User extends Tight_Model_Db_Dao implements Model_Dao_Generic_IUser
{
    /**
     * @param Model_User $user
     * @return boolean success
     */
    public function saveOrUpdate(Model_User $user)
    {
        try {
            $user->save();
            return true;
        }
        catch (Exception $e) {
            throw new Exception($e->getMessage());
            return false;
        }
    }

    /**
     * @param mixed $id
     * @return Model_User
     */
    public function find($id)
    {
        try {
            $user = Doctrine::getTable('Model_User')->find($id);
            if (false === $user) {
                return null;
            }
            return $user;
        }
        catch (Exception $e) {
            throw new Exception($e->getMessage());
            return false;
        }
    }
}

Exemple basique et épuré. L'idéal est d'avoir un DAO de référence qui implémente déjà les find, save, delete etc. et de l'étendre.


A+ benjamin.

Dernière modification par Delprog (24-09-2009 17:12:59)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#42 24-09-2009 14:39:39

booradley
Membre
Date d'inscription: 10-01-2009
Messages: 163

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

Delprog a écrit:

Salut,

Dans Zend_Db tout est lazy-loaded mais le chargement automatique des dépendances n'est pas géré (l'enregistrement non plus).
Le mapping n'est pas non plus disponible (bientôt vu les proposals).

Zend_Db_Table et Zend_Db_Table_Row assurent les fonctionnalités de base d'un ORM, à savoir manipuler les tables et les enregistrements des tables d'une base de données relationnelle comme s'il s'agissait d'une base de données orientée objet.

Pour Doctrine, dans mon plugin de resource

Code:

if (true === (bool)$this->_options['generate']) {       
            $genOptions = array(
                'baseClassPrefix' => $this->_options['options']['baseClassPrefix'],
                'classPrefix' => $this->_options['options']['classPrefix'],
                'classPrefixFiles' => (bool)$this->_options['options']['classPrefixFiles'],
                'baseClassesDirectory' => $this->_options['options']['baseClassesDirectory'],
                'generateTableClasses' => (bool)$this->_options['options']['generateTableClasses']
            );
            Doctrine::generateModelsFromYaml($this->_options['path']['schema'], $this->_options['path']['models'], $genOptions);
        }

Dans la conf

Code:

;====== Resource Doctrine
resources.doctrine.dsn = "mysql://user:password@localhost/schema"
resources.doctrine.generate = false
resources.doctrine.options.baseClassPrefix = Entity_
resources.doctrine.options.classPrefix = Model_
resources.doctrine.options.classPrefixFiles = false
resources.doctrine.options.baseClassesDirectory = Entity
resources.doctrine.options.generateTableClasses = true
resources.doctrine.path.schema = APPLICATION_PATH "/config/models.yml"
resources.doctrine.path.models = APPLICATION_PATH "/models"

Par contre attention, l'option "classPrefixFiles" ne sera dispo que dans la 1.2 qui est en Alpha. Il faut donc pour l'instant renommer les fichiers à la main (les noms des classes sont ok eux).
Perso j'utilise un logiciel pour ça, genre AntRenamer, c'est un peu lourd de se le palucher.

A+ benjamin.

J'ai repris la config de Benjamin cad que mes modeles sont générés dans /models et préfixés par Model_
et mes classes "Base" dans /models/Entity et préfixés par Model_Entity.

Dans mon bootstrap j'ai:

Code:

    public function _initDoctrine()
    {
    require_once 'Doctrine.php';   
    $doctrineConfig = $this->getOption('doctrine');
    //print_r($doctrineConfig);
    
    $loader = Zend_Loader_Autoloader::getInstance();
    $loader->pushAutoloader(array('Doctrine', 'autoload'),'Model_');

    $manager = Doctrine_Manager::getInstance();
    $manager->setAttribute(Doctrine::ATTR_AUTO_ACCESSOR_OVERRIDE, true);
    $manager->setAttribute(Doctrine::ATTR_AUTOLOAD_TABLE_CLASSES, true);
    $manager->setAttribute(
        Doctrine::ATTR_MODEL_LOADING,
        Doctrine::MODEL_LOADING_CONSERVATIVE
    );
echo time()."<br/>";
    // Add models and generated base classes to Doctrine autoloader
    Doctrine::loadModels($doctrineConfig['models_path']);
echo time()."<br/>";

    $manager->openConnection($doctrineConfig['connection_string']);     
    
    return $manager;
    }

Tout fonctionne parfaitement bien mais la commande
Doctrine::loadModels($doctrineConfig['models_path']);
met encore 4 secondes a s'exécuter (111 classes a charger).

Est ce que vous voyez quelque chose qui cloche dans cette fonction?

Hors ligne

 

#43 24-09-2009 14:52:15

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

Tu ne devrais pas avoir à utiliser cette méthode, les models sont chargés automatiquement quand c'est nécessaire. Je n'utilise à aucun moment un loadModels() ou loadModel().

Tu devrais lire le billet de Matthew comme conseillé par nORKy. Il explique comment configurer l'autoloader Zend pour Doctrine. Ca fonctionne très bien.

Un exemple de mon Tight_Application_Resource_Doctrine:

Code:

<?php
/**
 * Doctrine resource
 *
 * @category   Tight
 * @package    Tight_Application
 * @subpackage Resource
 * @author     Benjamin Dulau
 */
class Tight_Application_Resource_Doctrine extends Zend_Application_Resource_ResourceAbstract
{
    /**
     * @var Doctrine_Manager
     */
    protected $_manager;
    
    protected $_options = array();

    /**
     * Initialize Doctrine
     * 
     * @return Doctrine_Manager
     */
    public function init()
    {                           
        $manager = $this->getManager();
        $this->_options = $this->getOptions();
                                
        $autoloader = $this->getBootstrap()->getApplication()->getAutoloader();
        $autoloader->pushAutoloader(array('Doctrine', 'autoload'));

        $manager->setAttribute(Doctrine::ATTR_AUTO_ACCESSOR_OVERRIDE, true);
        $manager->setAttribute(
            Doctrine::ATTR_MODEL_LOADING,
            Doctrine::MODEL_LOADING_CONSERVATIVE                        
        );
        $manager->setAttribute(Doctrine::ATTR_AUTOLOAD_TABLE_CLASSES, true);

        //TODO: quote identifier c'est pas top.
        //Plutôt renommer les tables et champs qui portent des noms réservés
        $manager->setAttribute(Doctrine::ATTR_QUOTE_IDENTIFIER, true);

        //TODO: ajouter des test sur les options si manquantes

        // connection
        $dsn = $this->_options['dsn'];
        
        $conn = Doctrine_Manager::connection($dsn, 'doctrine');
        $conn->setAttribute(Doctrine::ATTR_USE_NATIVE_ENUM, true);
        $conn->setCharset('utf8');

        if (true === (bool)$this->_options['generate']) {       
            $genOptions = array(
                'baseClassPrefix' => $this->_options['options']['baseClassPrefix'],
                'classPrefix' => $this->_options['options']['classPrefix'],
                'classPrefixFiles' => (bool)$this->_options['options']['classPrefixFiles'],
                'baseClassesDirectory' => $this->_options['options']['baseClassesDirectory'],
                'generateTableClasses' => (bool)$this->_options['options']['generateTableClasses']
            );
            Doctrine::generateModelsFromYaml($this->_options['path']['schema'], $this->_options['path']['models'], $genOptions);
        }

        return $manager;
    }

    /**
     * Retrieve Doctrine Manager instance
     * 
     * @return Doctrine_Manager
     */
    public function getManager()
    {
        if (null === $this->_manager) {
            $this->_manager = Doctrine_Manager::getInstance();
        }
        return $this->_manager;
    }
}

Dans application.ini il suffit d'ajouter un namespace (sans le underscore attention)

Code:

autoloaderNamespaces[] = "Doctrine"

Et aussi ne pas oublier l'includePath, par ex. pour cette arbo:

Code:

library/
    Doctrine/
    Tight/
    Doctrine.php

Code:

;====== Library include_path
includePaths.library = APPLICATION_PATH "/../library"

Et tout roule à merveille.

Le gros problème pour l'instant c'est l'option "classPrefixFiles" qui ne fonctionne pas encore et est prévu pour la version 1.2 (actuellement en Alpha). Du coup il faut renommer les fichiers après la génération.

A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#44 24-09-2009 15:13:42

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

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

Delprog a écrit:

Le gros problème pour l'instant c'est l'option "classPrefixFiles" qui ne fonctionne pas encore et est prévu pour la version 1.2 (actuellement en Alpha). Du coup il faut renommer les fichiers après la génération.

A+ benjamin.

C'est pour ca que j'utilise loadModels. Comme on peut le voir plus, c'est très rapide chez moi, aucun pertes de performances. Mais dès que j'utiliserais la 1.2, je ne passerais plus par loadModels


----
Gruiiik !

Hors ligne

 

#45 25-09-2009 04:38:43

lesauf
Membre
Lieu: Yaoundé - Cameroun
Date d'inscription: 29-11-2007
Messages: 52
Site web

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

Delprog a écrit:

Salut,

Non je n'ai pas implémenté de mapper. Simplement des DAO tout ce qu'il y a de plus basique.

Merci.

Hors ligne

 

#46 02-10-2009 14:26:00

lesauf
Membre
Lieu: Yaoundé - Cameroun
Date d'inscription: 29-11-2007
Messages: 52
Site web

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

Delprog a écrit:

Salut,

Non je n'ai pas implémenté de mapper. Simplement des DAO tout ce qu'il y a de plus basique.

Je me préparais justement à demander la différence entre dao et mapper, et j'ai trouvé ceci. Cool. Merci.

Dans ce cas, je me demande où se place Doctrine dans ton schémas:
Controller -> Service -> DAO -> Mapper -> Db à la place de Mapper?

Dernière modification par lesauf (02-10-2009 14:53:45)

Hors ligne

 

#47 11-11-2010 13:59:26

lesauf
Membre
Lieu: Yaoundé - Cameroun
Date d'inscription: 29-11-2007
Messages: 52
Site web

Re: [Zend_Db 1.9] Finalement ce sera Doctrine

Je répond :
Controller -> Service -> Doctrine (Mapper comprenant une couche DAO) -> Db

J'ai compris ça récemment en revoyant un slide de Mattews, "Architecting your models". Je me demande comment je ne l'avais pas compris la première fois. smile

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