Zend Framework 2 + Doctrine 2
我想开始与Zend Framework开发,我想使用zf2。 由于我使用Doctrine 2,你能提供一些教程来帮助我将它集成到zf2吗? 谢谢!
上次检查:ZF2.2。*,DoctrineORMModule 0.7。
官方模块
您可能需要通过作曲者加载DoctrineORMModule
:
- 将
doctrine/doctrine-orm-module
到您的composer.json的require(例如,格式化问题列表bcs后的代码) - 运行
php composer.phar install
- 创build目录
./data/DoctrineORMModule/Proxy
并确保您的应用程序的写入权限 - 通过你的应用程序
/config/autoload
configuration学说给模块的项目特定的设置(数据库等) - 在模块
config.php
configurationdoctrine的实体映射 - 添加一个实体到你的项目中
- 将
DoctrineORMModule
和DoctrineModule
添加到你的config/application.config.php
- 运行cli工具来生成你的表
./vendor/bin/doctrine-module orm:schema-tool:create
我强烈build议您不要使用composer,因为这是一种安装依赖关系的简单方法,并且自动加载器都已经设置好了。 另外ZF2默认通过作曲者发货。
示例代码
composer.json
{ "require" : { "php": ">=5.3.3", "zendframework/zendframework": "2.*" "doctrine/doctrine-orm-module": "0.*" } }
实体设置
<?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' ) ) ) ) );
需要注意的是:你的实体的path应该是完全合格的。 最好从__DIR__
开始,否则的东西会打破(每个新项目,我想知道为什么命令行工具不工作,直到我find这个错误…;)
连接设置
<?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', ) ) ) ), );
所有代码示例都是官方教义模块自述文件的一部分
进一步阅读:
Marco Pivetta做了一个关于教义模块用法的精彩演讲 ,我向所有使用这个模块的人推荐。
Jason Grimes在phpdeveloper.org上写了一个教程 , 这个教程应该有助于安装教义,然后才有一个官方模块。
更新:
我进一步研究了这一点,这听起来像在Zend Framework 2中对Doctrine 2的本地支持仍在工作中。 我build议密切关注这个Github Gist来监视进展如何。
同时,您可能想要查看Michiel Staessen的存储库zf2-doctrine-provider 。 目前还没有相关的文档,但是一旦您开始了解Bisna图书馆如何在ZF 1.x中工作,这将是一个合理的下一步。
我很高兴地看到围绕ZF2本机支持Doctrine的大部分讨论都集中在灵活性上。 这是我的希望(显然也是其他人)在Zend框架中使用Doctrine将不是一个/或select,而是build立一个坚实和灵活的领域模型的特定部分的选项。
原帖:
幸运的是,学习ZF 1.x + Doctrine的大部分主要资源都考虑了向ZF2的迁移。 在ZF2中,它们并不包括原则性的对于学说的支持,但是它们应该帮助你开始许多主要的原则。
Zendcasts有一个以“ unit testing学说2实体 ”开始的优秀教义2教程系列。 请务必观看随后的video,因为Jon L.(主持人)在video中继续采用最佳做法。
Zend Technologies有一个权威的networking研讨会,名为“ Zend Framework v1 + Doctrine v2 ”。 演示者特别讨论如何构build示例应用程序以适应ZF2迁移。
至于ZF2原生支持,我还没有find任何东西。 Rob Allen着名的ZF2教程使用了Zend \ Db,Nick Belhomme的“ Zend Framework 2.0 Cookbook ”中没有教义覆盖。
祝您好运,请发布您在ZF2 / D2上find的优质资源。