carlosv2 / dumbsmart-repositories-bundle
Symfony与DumbsmartRepositories之间的桥梁
1.2.0
2018-06-01 11:31 UTC
Requires
- php: ~5.5 || ~7.0
- carlosv2/dumbsmart-repositories: ~1.0
- doctrine/common: ~2.2
- everzet/persisted-objects: ~1.0
- symfony/framework-bundle: ~2.3 || ~3.0
Requires (Dev)
- bossa/phpspec2-expect: ~1.0
- phpspec/phpspec: ~2.1
Suggests
- carlosv2/funnel: Little testing repositories enhancer
This package is not auto-updated.
Last update: 2024-09-14 23:49:38 UTC
README
本项目是Dumbsmart Repositories与symfony项目之间的桥梁。
安装
步骤 1: 下载包
打开命令行控制台,进入您的项目目录并执行以下命令以下载此包的最新稳定版本
$ composer require --dev carlosv2/dumbsmart-repositories-bundle
此命令要求您全局安装Composer,如Composer文档中的安装章节所述。
步骤 2: 启用包
如果您正在使用Allegro,则不需要进行其他操作即可安装它。
如果您不使用Allegro,请通过将其添加到项目app/AppKernel.php文件中注册的包列表来启用包(由于它主要用于开发,您可能希望将此文件中的配置放在开发配置下)
<?php // app/AppKernel.php // ... class AppKernel extends Kernel { public function registerBundles() { $bundles = array( // ... new carlosV2\DumbsmartRepositoriesBundle\DumbsmartRepositoriesBundle(), ); // ... } // ... }
步骤 3: 配置
以下是为此包提供的可用配置
dumbsmart_repositories:
repositories:
type: <string>
path: <string>
autoconfigure:
orm: <boolean>
odm: <boolean>
entities: <array>
aliases: <array>
任何值都是可选的,如下
- dumbsmart_repositories.repositories.type: 仓库类型。可用值为
file或in_memory。默认值:in_memory。 - dumbsmart_repositories.repositories.path: 如果仓库类型是
file,则这是创建它们的文件夹。默认值:系统临时文件夹。 - dumbsmart_repositories.autoconfigure.orm: 从doctrine实体配置中进行配置。默认值:
false。 - dumbsmart_repositories.autoconfigure.odm: 从doctrine文档配置中进行配置。默认值:
false。 - dumbsmart_repositories.entities: 手动实体配置。默认值:空数组。
- dumbsmart_repositories.aliases: 仓库重用的一组类别名。默认值:空数组。
实体
您可以使用实体来完成
- 无法自动配置的实体
- 在不支持Doctrine的系统上注入仓库
您不需要实体来完成
- 您不需要将其存储在仓库中的对象
每个实体都必须有以下字段
dumbsmart_repositories:
entities:
class_1:
id: id_property
relations:
property_1: many
property_2: one
...
class_2:
extends: class_1
relations:
property_3: one
property_4: many
...
...
其中
- id: 指向给定类中的ID属性。
- extends: 指向此类所继承的类。
- relations: 包含具有关系的属性列表。您只需设置映射到其他对象的属性,而这些对象也需要仓库。任何作为任何关系部分映射的对象都必须在
entities中也有一个条目。默认值:空数组。
请注意,一个类只能有id或extends字段中的一个,但不能同时都有。此外,relations中的每个属性只能有one或many作为指定的值。
别名
您可以使用别名来完成
- 存储类似类
- 根据任何标准给类命名
您不需要别名来完成
- 继承的类(如果Doctrine被设置为处理它们,继承的类将存储在同一个仓库中)。
根据您需要的配置级别,您可以使用以下快捷方式来设置它们
dumbsmart_repositories:
aliases:
alias_class_1: original_class_1
alias_class_2: original_class_2
...
或者使用扩展版本并也为某些字段设置别名(只有需要定义的更改字段应该被定义)
dumbsmart_repositories:
aliases:
alias_class_1:
class: original_class_1
mapping:
original_class_1_field_A: alias_class_1_field_B
...
alias_class_2:
class: original_class_2
mapping:
original_class_2_field_A: alias_class_2_field_B
...
...
用法
完成配置后,您可以通过将服务注入依赖注入中来请求一个仓库,如下所示
<service id="class.repository"
class="Everzet\PersistedObjects\Repository">
<factory service="dumbsmart_repositories.front_repository_factory" method="getRepository" />
<argument>class</argument>
</service>
您可以创建尽可能多的仓库,但请注意,根据配置的不同,同一个仓库可能会为不同的类返回。