fredjuvaux/doctrine-orm-provider

Silex 的 Doctrine ORM 提供器

dev-master / 1.0.x-dev 2015-08-18 17:57 UTC

This package is not auto-updated.

Last update: 2024-09-28 16:15:26 UTC


README

此扩展通过重用与 DBAL 扩展(Silex 包含的默认 DoctrineServiceProvider)建立的数据库连接来设置 Silex 的 Doctrine ORM。

在本 README 中,您将找到以下主题

依赖项

安装

您基本上有三个选项可以将此扩展添加到您的 Silex 项目中。我们强烈建议第一个选项!

composer.json

https://packagist.org.cn/packages/fredjuvaux/silex-orm-provider

将依赖项添加到您的项目 composer.json 文件中

"fredjuvaux/doctrine-orm-provider": "1.0.*@dev"

并更新您的依赖项

php composer.phar update

这无疑是迄今为止最简单的方法,因为它会自动添加 Doctrine 依赖项,并将所有内容添加到 Composer 提供的自动加载机制中。

有关 Composer 的更多信息,请访问 getcomposer.org

Git

另一个选项是克隆项目

cd /path/to/your_project/vendor
git clone git@github.com:fredjuvaux/silex-orm-provider.git

或者,如果您的项目也在 git 仓库中,您可以将其添加为子模块

cd /path/to/your_project
git submodule add git@github.com:fredjuvaux/silex-orm-provider.git vendor/silex-orm-extension

这将需要您手动安装所有依赖项。请注意,您需要手动将提供器添加到 Silex 自动加载器(或任何自动加载机制)中。更多关于这两个主题的内容可以在下面找到。

下载存档

GitHub 还允许您 下载 ZIP 存档,您可以将它解压到您的 vendor 目录中。此方法也将需要您手动安装所有依赖项并将所有内容添加到您的自动加载器中。

配置

首先,您应该配置 Doctrine DBAL 连接。有关配置 DoctrineServiceProvider 的更多信息,我建议您阅读 Silex 文档的此页

注册 Doctrine ORM 提供器相对简单

<?php

/* ... */

$app['autoloader']->registerNamespace('ORM', __DIR__ . '/vendor/silex-orm-extension/lib');

$app->register(new ORM\Provider\DoctrineORMServiceProvider(), array(
    'db.orm.class_path'            => __DIR__.'/../vendor/doctrine/orm/lib',
    'db.orm.proxies_dir'           => __DIR__.'/../var/cache/doctrine/Proxy',
    'db.orm.proxies_namespace'     => 'DoctrineProxy',
    'db.orm.auto_generate_proxies' => true,
    'db.orm.entities'              => array(array(
        'type'      => 'annotation',
        'path'      => __DIR__.'/Entity',
        'namespace' => 'Entity',
    )),
));

/* ... */

注意:如果您不想使用 Silex 的内部自动加载器(因为您正在使用其他自动加载器,例如由 composer 生成的自动加载器),则可以省略以 $app['autoloader'] 开头的行以及 db.orm.class_path 参数。

参数(及其默认值)

以下列出了所有参数及其默认值(它们也可以在 DoctrineORMServiceProvider::setOrmDefaults 中找到)。

  • db.orm.auto_generated_proxies

    默认值: true

    设置是否由 Doctrine 在运行时自动生成代理类。如果设置为 false,则必须手动使用 Doctrine 命令行工具生成代理类。建议在生产环境中禁用自动生成。

  • db.orm.cache

    默认值: new ArrayCache

    定义了应使用哪种缓存方法。在开发时,默认的(ArrayCache)应该可以,但在生产环境中,你可能想将其更改为APC或Memcache等。更多信息请参考Doctrine 2 ORM 2.1文档的第22章《缓存》。

  • db.orm.class_path

    只有当你想使用Silex自动加载器自动加载Doctrine 2 ORM类时才需要使用此选项。它应该指向存储类的文件夹(Doctrine仓库的lib文件夹)。

  • db.orm.entities

    默认

array(
    array(
        'type' => 'annotation',
        'path' => 'Entity',
        'namespace' => 'Entity',
    )
)
An array of arrays which should contain:
*   ``type``: Type of metadata driver used (``annotation``, ``yml``, ``xml``)
*   ``path``: Path to where the metadata is stored
*   ``namespace``: Namespace used for the entities

The Doctrine ORM Service Provider uses a _DriverChain_ internally to configure Doctrine 2 ORM.
This allows you to use mixed types of metadata drivers in a single project.
  • db.orm.proxies_dir

    默认: cache/doctrine/Proxy

    设置Doctrine生成任何代理类的目录。有关代理类及其在Doctrine中的使用的详细说明,请参阅Doctrine ORM文档的《3.5 代理对象》部分。

  • db.orm.proxies_namespace

    默认: DoctrineProxy

    设置用于生成代理类的命名空间。有关代理类及其在Doctrine中的使用的详细说明,请参阅Doctrine ORM文档的《3.5 代理对象》部分。

用法

你可以通过调用$app['db.orm.em']来访问EntityManager。