nutwerk / doctrine-orm-provider
Silex 的 Doctrine ORM 提供者
Requires
- php: >=5.3.2
- doctrine/common: 2.1.*
- doctrine/dbal: 2.1.*
- doctrine/orm: 2.1.*
Suggests
- symfony/console: Necessary if you would like to use the Doctrine CLI tools
This package is not auto-updated.
Last update: 2024-09-14 12:02:13 UTC
README
此扩展通过复用与 DBAL 扩展(Silex 内置的 DoctrineServiceProvider)建立的数据库连接来为 Silex 设置 Doctrine ORM。
在以下 README 中,您可以找到以下主题
依赖关系
- Silex (在 composer.json 中未提及,因为在我看来,它是你自己的项目的直接依赖,所以你应该将其放在你自己的 JSON 文件中。)
- PHP 5.3.2 及以上版本
- Doctrine 2 对象关系映射器
- Doctrine 数据库抽象层
- Doctrine 的通用库
安装
您有三种基本方法可以将此扩展添加到您的 Silex 项目中。我们强烈推荐第一种方法!
composer.json
https://packagist.org.cn/packages/nutwerk/doctrine-orm-provider
将 'nutwerk/doctrine-orm-provider' 添加到项目中 composer.json 文件中的依赖项,并更新您的依赖项。这是迄今为止最简单的方法,因为它会自动添加 Doctrine 依赖项,并将所有内容添加到 Composer 提供的自动加载机制中。
有关 Composer 的更多信息,请参阅 getcomposer.org。
Git
另一种选择是克隆项目
cd /path/to/your_project/vendor
git clone git@github.com:mjakubowski/nutwerk-orm-extension.git
或者,如果您的项目也在 Git 仓库中,您可以将它作为子模块添加
cd /path/to/your_project
git submodule add git@github.com:mjakubowski/nutwerk-orm-extension.git vendor/nutwerk-orm-extension
这将要求您手动安装所有依赖项。请注意,您还需要手动将提供者添加到 Silex 自动加载器(或任何其他自动加载机制)。有关这两个主题的更多信息,请参阅以下内容。
下载存档
GitHub 还提供选项,您可以 下载 ZIP 存档,并将其提取到您的 vendor 文件夹中。此方法也将要求您手动安装所有依赖项并将所有内容添加到您的自动加载器中。
配置
首先,您应该配置 Doctrine DBAL 连接。有关配置 DoctrineServiceProvider 的更多信息,我建议阅读 Silex 文档中的此页。
注册 Doctrine ORM 服务提供者相当直接
<?php /* ... */ $app['autoloader']->registerNamespace('Nutwerk', __DIR__ . '/vendor/nutwerk-orm-extension/lib'); $app->register(new Nutwerk\Provider\DoctrineORMServiceProvider(), array( 'db.orm.class_path' => __DIR__.'/vendor/doctrine2-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__.'/app', '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.cache_metadata
默认值: db.orm.cache
如果你希望使用与db.orm.cache中定义的不同的缓存方法来缓存元数据,你可以使用此参数来设置。
-
db.orm.cache_query
默认值: db.orm.cache
如果你希望使用与db.orm.cache中定义的不同的缓存方法来缓存查询,你可以使用此参数来设置。
-
db.orm.cache_result
如果你想配置结果缓存,请设置此参数。
-
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。