Zend Framework 2 + Doctrine 2 [关闭]

Posted

技术标签:

【中文标题】Zend Framework 2 + Doctrine 2 [关闭]【英文标题】:Zend Framework 2 + Doctrine 2 [closed] 【发布时间】:2011-12-13 14:38:38 【问题描述】:

我想开始使用 Zend Framework 进行开发,我想使用 zf2。由于我使用 Doctrine 2,你能推荐一些教程来帮助我将它集成到 zf2 中吗?谢谢!

【问题讨论】:

marco-pivetta.com/doctrine-orm-zf2-tutorial/# ..我非常喜欢这个演示文稿。由 Marco Pivetta(Doctrine 核心团队和 ZF2 贡献者)撰写的关于 ZF2 + Doctrine 集成的文章 【参考方案1】:

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

官方模块

您可能希望通过 composer 加载 DoctrineORMModule

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

我强烈建议您不要使用 composer,因为它是一种安装依赖项并设置自动加载器的简单方法。 ZF2 默认通过 composer 发布。

示例代码

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'
                )
            )
        )
    )
);

需要注意的问题:通往实体的路径应该是完全限定的。最好从__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',
                )
            )
        )
    ),
);

All code examples are part of the official doctrine module readme

延伸阅读:

Marco Pivetta 做了一个wonderful presentation about doctrine-module usage,我推荐给所有使用这个模块的人。

Jason Grimes wrote a tutorial 出现在 phpdeveloper.org 上,它应该有助于在官方模块出现之前安装学说。

【讨论】:

谢谢...这个教程很有帮助! 此外,为了使单元测试与 phpunit 一起工作,您应该在 TestConfig.php 文件中的模块数组中添加“DoctrineModule”和“DoctrineORMModule”,否则您将收到以下错误: Zend\ServiceManager\Exception\ServiceNotFoundException: Zend\ServiceManager\ServiceManager::get 无法获取或创建一个实例,用于教义.entitymanager.orm_default【参考方案2】:

更新:

我对此进行了更深入的研究,听起来 Zend Framework 2 中对 Doctrine 2 的原生支持仍在进行中。我建议密切关注此Github Gist 以监控进展情况。

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

看到大部分关于 ZF2 对 Doctrine 的原生支持的讨论都集中在灵活性上,这让我很受鼓舞。我希望(显然也有其他人)在 Zend Framework 中使用 Doctrine 不是一个非此即彼的选择,而是构建可靠和灵活领域模型的特定部分的一种选择。

原帖:

幸运的是,学习 ZF 1.x + Doctrine 的大部分主要资源都考虑了向 ZF2 的迁移。它们不包括对 ZF2 中 Doctrine 的原生支持,但它们应该可以帮助您开始了解许多主要原则。

Zendcasts 有一个出色的 Doctrine 2 教程系列,以“Unit Testing Doctrine 2 Entities”开头。请务必观看随后的视频,因为 Jon L.(演示者)在观看视频的过程中会继续采用最佳实践。

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

至于 ZF2 原生支持,我也没有找到任何东西。 Rob Allen 著名的 ZF2 tutorial 使用 Zend\Db,并且在 Nick Belhomme 的“Zend Framework 2.0 Cookbook”中还没有任何教义覆盖。

祝您入门顺利,请发布您在 ZF2/D2 上找到的任何好的资源。

【讨论】:

Jon 的网络研讨会。 L.真的很棒。它也帮助我集成了 Doctrine2 和 Zend Framework 1.10.11。但是您应该知道,来自“Nolasnowbal”的 Bisna“胶水”仅适用于 Doctrine 2.0。如果要集成 Doctrine 2.1。在 Zend Framework 项目中,您应该使用这个 fork:github.com/guilhermeblanco/ZendFramework1-Doctrine2 如果您需要通过示例获得新版本的帮助,只需回复 :) 基斯绝对正确。帖子“如何配置 Bisna 以与 Doctrine 2.1 一起使用...”(下面的链接)帮助我使 Bisna 升级无缝工作。 堆栈链接:***.com/questions/6896200/…

以上是关于Zend Framework 2 + Doctrine 2 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Zend Framework 2 入门

文件上传表单的 Zend 验证器大小 - Zend Framework 2.3

文件上传表单的 Zend 验证器大小 - Zend Framework 2.3

如何模拟 Zend\Form 提交而不在 Zend Framework 2/3 中显示表单?

让 Zend Framework 2 Memcached 工作

Zend Framework 2 & PHPUnit - 模拟 Zend\Db\Adapter\Adapter 类