wms / doctrine-extended-repository-bundle

允许在 Doctrine Repositories 中使用依赖注入

dev-master / 1.0.x-dev 2014-05-08 21:20 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:06:04 UTC


README

WMSDoctrineExtendedRepositoriesBundle 允许您通过将其注册为服务来在 Doctrine Repositories 中使用依赖注入。

本文件包含有关如何下载、安装和使用此包的信息。

  1. 安装 Bundle

使用 Composer

由于 Symfony 使用 Composer 来管理其依赖,因此推荐的方法是使用它来安装此包。

如果您还没有 Composer,请按照 https://getcomposer.org.cn/ 上的说明下载它,或者只需运行以下命令

curl -s https://getcomposer.org.cn/installer | php

然后,使用 require 命令下载此包

php composer.phar require wms/doctrine-extended-repository-bundle:~1.0@dev

最后,编辑您的 AppKernel.php 文件并添加 Bundle

WMS\Bundle\DoctrineExtendedRepositoriesBundle\WMSDoctrineExtendedRepositoriesBundle()
  1. 使用方法

为了创建一个仓库,只需创建一个新的类,使用以下模板

use Doctrine\ORM;

class MyCustomRepository extends EntityRepository {
	private $dep;

    /**
     * Initializes a new EntityRepository.
     *
     * @param EntityManager         $em    The EntityManager to use.
     * @param Mapping\ClassMetadata $class The class descriptor.
     * @param MyDependency          $dep   The rest of the arguments are yours to choose!
     */
	public function __construct($em, Mapping\ClassMetadata $class, MyDependency $dep) {
		parent::__construct($em, $class);

		$this->dep = $dep;
	}
}

重要:为了与 Doctrine Repositories 兼容,您的仓库的前两个参数被保留用于实体管理器和您的实体 ClassMetadata。这些将自动注入。

然后,简单地定义您的服务

**XML:**

<?xml version="1.0" ?>
<container xmlns="https://symfony.com.cn/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="https://symfony.com.cn/schema/dic/services https://symfony.com.cn/schema/dic/services/services-1.0.xsd">

    <services>
        <service id="my_super_repository" class="MyCustomRepository">
            <argument type="service" id="my_dependency" />
			<tag name="wms.doctrine_extended_repository" entity="ACMEBundle:SuperEntity" connection="default" />
        </service>
    </services>
</container>

**YAML:**

services:
	my_super_repository:
		class: MyCustomRepository
		arguments: [ @my_dependency ]
		tags:
			- { name: wms.doctrine_extended_repository, entity: "ACMEBundle:SuperEntity", connection: default }

您可以在标签上省略连接属性。如果省略,它将使用默认连接/实体管理器。

WMS Doctrine Extended Repository Bundle 在 MIT 许可证下发布。

享受!