web-dev-qa-db-fra.com

Zend Framework 2 + Doctrine 2

Je voudrais commencer à développer avec Zend Framework et je voudrais utiliser zf2. Puisque j'utilise Doctrine 2, pouvez-vous suggérer quelques tutoriels pour m'aider à l'intégrer dans zf2? Merci!

41
flux

dernière vérification: ZF2.2. *, DoctrineORMModule 0.7.

Module officiel

Vous pouvez charger DoctrineORMModule via le compositeur:

  • ajouter doctrine/doctrine-orm-module à votre compositeur.json demande (exemple de code après liste bcs des problèmes de formatage)
  • courir php composer.phar install
  • créer le répertoire ./data/DoctrineORMModule/Proxy et garantir un accès en écriture à votre application
  • configure doctrine via vos applications /config/autoload pour donner au module les paramètres spécifiques au projet (base de données, etc.)
  • configurer le mappage d'entités de doctrine dans vos modules config.php
  • ajouter une entité à votre projet
  • ajoutez DoctrineORMModule et DoctrineModule à votre config/application.config.php
  • exécutez l'outil cli pour générer vos tables ./vendor/bin/doctrine-module orm:schema-tool:create

Je vous déconseille fortement de ne pas utiliser Composer, car c'est un moyen facile d'installer des dépendances et de configurer tous les chargeurs automatiques. ZF2 est également expédié via composer par défaut.

Exemple de code

composer.json

{  
    "require" : {  
        "php": ">=5.3.3",  
        "zendframework/zendframework": "2.*"                
        "doctrine/doctrine-orm-module": "0.*"                
    }  
}  

paramètres des entités

<?php
return array(
    'doctrine' => array(
        'driver' => array(
            // defines an annotation driver with two paths, and names it `my_annotation_driver`
            'my_annotation_driver' => array(
                'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
                'cache' => 'array',
                'paths' => array(
                    'path/to/my/entities',
                    'another/path'
                ),
            ),

            // default metadata driver, aggregates all other drivers into a single one.
            // Override `orm_default` only if you know what you're doing
            'orm_default' => array(
                'drivers' => array(
                    // register `my_annotation_driver` for any entity under namespace `My\Namespace`
                    'My\Namespace' => 'my_annotation_driver'
                )
            )
        )
    )
);

Un piège à connaître: les chemins d'accès à vos entités doivent être pleinement qualifiés. Meilleur début avec __DIR__, sinon les choses vont se casser (à chaque nouveau projet, je me demande pourquoi l'outil de ligne de commande ne fonctionne pas jusqu'à ce que je trouve cette erreur ...;)

paramètres de connexion

<?php
return array(
    'doctrine' => array(
        'connection' => array(
            // default connection name
            'orm_default' => array(
                'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
                'params' => array(
                    'Host'     => 'localhost',
                    'port'     => '3306',
                    'user'     => 'username',
                    'password' => 'password',
                    'dbname'   => 'database',
                )
            )
        )
    ),
);

Tous les exemples de code font partie du fichier readme officiel du module doctrine

Lectures complémentaires:

Marco Pivetta a fait un merveilleuse présentation sur l'utilisation du module doctrine , que je recommande à tous ceux qui utilisent ce module.

Jason Grimes a écrit un tutoriel présenté sur phpdeveloper.org qui devrait aider à installer la doctrine, avant qu'il n'y ait un module officiel.

53
Samuel Herzog

Mise à jour:

J'ai fait des recherches un peu plus loin et cela ressemble à un support natif pour Doctrine 2 dans Zend Framework 2 est toujours en préparation. Je recommande de garder un œil sur cela Github Gist pour suivre l'évolution des progrès.

En attendant, vous voudrez peut-être consulter le référentiel zf2-doctrine-provider de Michiel Staessen. Il n'y a pas encore de documentation pour cela, mais ce serait une prochaine étape logique une fois que vous serez au courant du fonctionnement de la bibliothèque Bisna dans ZF 1.x.

Je suis encouragé de voir que la plupart des discussions autour du support natif de ZF2 pour Doctrine ont été axées sur la flexibilité. J'espère (et apparemment d'autres aussi) que l'utilisation de Doctrine dans Zend Framework ne sera pas un choix non plus, mais plutôt une option pour construire des parties spécifiques d'un modèle de domaine solide et flexible.

Message d'origine:

Heureusement, la plupart des principales ressources d'apprentissage de ZF 1.x + Doctrine ont pris en compte la migration vers ZF2. Elles ne couvrent pas le support natif de Doctrine in ZF2, mais ils devraient vous aider à démarrer avec bon nombre des grands principes.

Zendcasts a une excellente Doctrine 2 séries de tutoriels commençant par " nit Testing Doctrine 2 Entities ". Assurez-vous de regarder les vidéos qui suivez-le également, car Jon L. (le présentateur) a continué à incorporer les meilleures pratiques tout au long des vidéos.

Zend Technologies a un webinaire définitif intitulé " Zend Framework v1 + Doctrine v2 ". Les présentateurs discutent spécifiquement comment ils ont structuré l'exemple d'application pour s'adapter à la migration ZF2.

Quant au support natif ZF2, je n'ai encore rien trouvé non plus. Le bien connu de Rob Allen tutoriel ZF2 utilise Zend\Db et il n'y a pas de couverture Doctrine (encore) dans Nick Belhomme " Zend Framework 2.0 Cookbook . "

Bonne chance pour commencer et veuillez publier toutes les bonnes ressources que vous trouverez sur ZF2/D2.

5
cantera