liveecommerce / container-interop-doctrine
PSR-11 的 Doctrine 工厂
Requires
- php: ^5.5|^7.0|^8.0|^8.1|^8.2|^8.3
- 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
This package is auto-updated.
Last update: 2024-09-23 03:31:46 UTC
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 在当前工作目录中查找配置文件,因此它将始终使用您当前所在的目录中的那个。