dasprid / container-interop-doctrine
Requires
- php: ^5.5|^7.0
- doctrine/common: ^2.6
- doctrine/dbal: ^2.5
- doctrine/orm: ^2.5
- psr/container: ^1.0.0
Requires (Dev)
- phpunit/phpunit: ^4.8
- squizlabs/php_codesniffer: ^2.5
README
此仓库已废弃 - 请访问 https://github.com/Roave/psr-container-doctrine
Doctrine 工厂用于 PSR-11(之前称为 container-interop
)。
此包提供了一组工厂,用于与使用 PSR-11 标准的容器配合,以便在项目中轻松集成 Doctrine。
安装
安装此包最简单的方法是通过 composer
$ composer require dasprid/container-interop-doctrine
配置
在一般情况下,如果您只使用单个连接,只需定义实体管理器工厂即可。
return [ 'dependencies' => [ 'factories' => [ 'doctrine.entity_manager.orm_default' => \ContainerInteropDoctrine\EntityManagerFactory::class, ], ], ];
如果您想添加第二个连接或使用除 "orm_default" 以外的名称,可以使用工厂的静态变体来实现。
return [ 'dependencies' => [ 'factories' => [ 'doctrine.entity_manager.orm_other' => [\ContainerInteropDoctrine\EntityManagerFactory::class, 'orm_other'], ], ], ];
此包提供的每个工厂默认都会在容器中查找已注册的工厂。如果找不到,它将自动从动态创建的工厂中提取其依赖项。这样可以避免在容器中注册可能根本不需要的工厂。当然,您也可以在需要时注册这些工厂。以下是一些额外的工厂:
\ContainerInteropDoctrine\CacheFactory
(doctrine.cache.*)\ContainerInteropDoctrine\ConnectionFactory
(doctrine.connection.*)\ContainerInteropDoctrine\ConfigurationFactory
(doctrine.configuration.*)\ContainerInteropDoctrine\DriverFactory
(doctrine.driver.*)\ContainerInteropDoctrine\EventManagerFactory
(doctrine.event_manager.*)
这些工厂都支持与实体管理器工厂相同的静态行为。对于容器的特定配置,示例目录中提供了一些示例。
示例配置
完整的示例配置可以在 example/full-config.php 中找到。请注意,其中的值是默认值,除非您需要更改它们,否则不必提供。请尽量保持您自己的配置尽可能简单。最小配置可以在 example/minimal-config.php 中找到。
使用 Doctrine CLI
为了能够使用 Doctrine 的 CLI 工具,您需要在项目目录中设置一个 cli-config.php
文件。该文件通常相当短,对于您来说可能看起来像这样:
<?php $container = require 'config/container.php'; return new \Symfony\Component\Console\Helper\HelperSet([ 'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper( $container->get('doctrine.entity_manager.orm_default') ), ]);
之后,您可以简单地调用 php vendor/bin/doctrine
。当您有多个实体管理器时,事情会变得稍微复杂一些。Doctrine 本身无法自行处理这种情况,因此一种可能的方式是创建两个独立的目录,每个目录包含一个唯一的 cli-config.php
文件。然后您可以从每个相应的目录调用 doctrine CLI。由于 CLI 正在查找当前工作目录中的配置文件,因此它将始终使用您当前所在的目录中的那个文件。