Zend Framework 2 + Doctrine 2 [已关闭]官方模块

我想开始使用Zend Framework进行开发,我想使用zf2。由于我使用教义2,您能建议一些教程来帮助我将其集成到zf2中吗?谢谢!


答案 1

上次检查时间:ZF2.2.*,DoctrineORMModule 0.7。

官方模块

您可能希望通过作曲家加载:DoctrineORMModule

  • 添加到您的 composer.json 的要求(列出格式问题 bcs 后的示例代码)doctrine/doctrine-orm-module
  • php composer.phar install
  • 创建目录并确保应用程序的写入访问权限./data/DoctrineORMModule/Proxy
  • 通过您的应用程序配置原则,为模块提供特定于项目的设置(数据库等)/config/autoload
  • 在模块中配置原则的实体映射config.php
  • 向项目中添加实体
  • 添加和到您的DoctrineORMModuleDoctrineModuleconfig/application.config.php
  • 运行 cli 工具以生成表./vendor/bin/doctrine-module orm:schema-tool:create

我强烈建议您不要使用 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'
                )
            )
        )
    )
);

需要注意的一点是:通往你的entites的路径应该是完全限定的。最好从开始,否则事情会中断(每个新项目我都想知道为什么命令行工具不起作用,直到我发现这个错误......;)__DIR__

连接设置

<?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 上写了一个教程,这应该有助于在官方模块出现之前安装教义。


答案 2

更新:

我对此进行了进一步研究,听起来Zend Framework 2中对Symotherion 2的原生支持仍在进行中。我建议密切关注这个Github Gist,以监控进度如何。

与此同时,您可能希望查看Michiel Staessen的存储库zf2-doctrine-provider。目前还没有关于它的文档,但是一旦你了解了Bisna库在ZF 1.x中的工作方式,这将是合乎逻辑的下一步。

我很受鼓舞地看到,围绕 ZF2 原生支持 Doctrine 的大多数讨论都集中在灵活性上。我希望(显然还有其他人)在Zend Framework中使用Tructice不会是一个非此即彼的选择,而是构建一个坚实而灵活的领域模型的特定部分的选项。

原文:

幸运的是,学习采埃孚 1.x + 学说的大部分主要资源都考虑到了向采埃孚 2 的迁移。它们没有涵盖对ZF2中教义的原生支持,但它们应该可以帮助您开始使用许多主要原则。

Zendcasts有一个优秀的教义2教程系列,从“单元测试教义2实体”开始。一定要观看它后面的视频,因为Jon L.(主持人)在视频中继续采用最佳实践。

Zend Technologies有一个名为“Zend Framework v1 + Doctrine v2”的权威网络研讨会。演示者专门讨论了他们如何构建示例应用程序以适应 ZF2 迁移。

至于ZF2原生支持,我还没有找到任何东西。Rob Allen 著名的 ZF2 教程使用了 Zend\Db,而 Nick Belhomme 的“Zend Framework 2.0 Cookbook”中(尚未)有 Doctrine 覆盖。

祝您好运,请在ZF2 / D2上找到的任何好资源。


推荐