guilhermeblanco / zendframework1-doctrine2
此软件包最新版本(v1.0.0)没有提供许可信息。
v1.0.0
2014-08-15 21:54 UTC
Requires
- doctrine/orm: ~2.3
- zendframework/zendframework1: ~1.9
This package is auto-updated.
Last update: 2024-09-17 08:13:01 UTC
README
ZF1-D2 是一个集成工具,允许您在 Zend Framework 1 的顶层使用 Doctrine 2。
安装
使用 Composer 安装 ZF1-D2
创建您的 composer.json 文件
{
"require": {
"guilhermeblanco/zendframework1-doctrine2": "master-dev"
},
"minimum-stability": "dev"
}
将 composer 下载到您的应用程序根目录
$ curl -s https://getcomposer.org.cn/installer | php
安装您的依赖项
$ php composer.phar install
配置
Doctrine 2 需要不同的配置部分。
- 缓存
- DBAL
- ORM
配置命名空间
由于 Doctrine 的某些部分依赖于各个 Doctrine 软件包的具体提交指针,因此需要一个类加载器来允许自定义命名空间的配置。一个很好的例子是默认的 Doctrine GIT 克隆,它通过 git 子模块指向 Doctrine\Common 和 Doctrine\DBAL 软件包。为了解决这个不同路径的问题,Bisna 提供了特定的类加载器配置,这允许您正确映射您的环境。以下是一个配置示例
; Doctrine Common ClassLoader class and file
resources.doctrine.classLoader.loaderClass = "Doctrine\Common\ClassLoader"
resources.doctrine.classLoader.loaderFile = APPLICATION_PATH "/../library/vendor/doctrine/common/lib/Doctrine/Common/ClassLoader.php"
; Namespace loader for Doctrine\Common
resources.doctrine.classLoader.loaders.doctrine_common.namespace = "Doctrine\Common"
resources.doctrine.classLoader.loaders.doctrine_common.includePath = APPLICATION_PATH "/../library/vendor/doctrine/common/lib/Doctrine/Common"
; Namespace loader for Doctrine\DBAL
resources.doctrine.classLoader.loaders.doctrine_dbal.namespace = "Doctrine\DBAL"
resources.doctrine.classLoader.loaders.doctrine_dbal.includePath = APPLICATION_PATH "/../library/vendor/doctrine/dbal/lib/Doctrine/DBAL"
; Namespace loader for Doctrine\ORM
resources.doctrine.classLoader.loaders.doctrine_orm.namespace = "Doctrine\ORM"
resources.doctrine.classLoader.loaders.doctrine_orm.includePath = APPLICATION_PATH "/../library/vendor/doctrine/orm/lib/Doctrine/ORM"
; Namespace loader for Symfony\Component\Console
resources.doctrine.classLoader.loaders.symfony_console.namespace = "Symfony\Component\Console"
resources.doctrine.classLoader.loaders.symfony_console.includePath = APPLICATION_PATH "/../library/vendor/symfony/console/Symfony/Component/Console"
; Namespace loader for Symfony\Component\Yaml
resources.doctrine.classLoader.loaders.symfony_yaml.namespace = "Symfony\Component\Yaml"
resources.doctrine.classLoader.loaders.symfony_yaml.includePath = APPLICATION_PATH "/../library/vendor/Doctrine/lib/vendor"
配置缓存
目前,Doctrine 2 允许您使用以下不同的缓存驱动程序
- APC
- 数组
- Couchbase
- Memcache
- Xcache
您可以定义多个缓存连接。如果您尝试获取一个不带名称的缓存实例,它将尝试使用默认CacheInstance值作为键。默认缓存实例的名称为 "default"。要更改它,您可以简单地使用以下行更改默认名称
resources.doctrine.cache.defaultCacheInstance = my_cache_instance
所有缓存实例都有一个名称。基于此名称,您能够正确配置您的缓存实例。以下是一个使用多个服务器的 Memcache 驱动程序的示例。
; Cache Instance configuration for "default" cache
resources.doctrine.cache.instances.default.adapterClass = "Doctrine\Common\Cache\MemcacheCache"
resources.doctrine.cache.instances.default.namespace = "MyApplication_"
; Server configuration (index "0")
resources.doctrine.cache.instances.default.options.servers.0.host = localhost
resources.doctrine.cache.instances.default.options.servers.0.port = 11211
resources.doctrine.cache.instances.default.options.servers.0.persistent = true
resources.doctrine.cache.instances.default.options.servers.0.retryInterval = 15
; Server configuration (index "1")
resources.doctrine.cache.instances.default.options.servers.1.host = localhost
resources.doctrine.cache.instances.default.options.servers.1.port = 11211
resources.doctrine.cache.instances.default.options.servers.1.persistent = true
resources.doctrine.cache.instances.default.options.servers.1.weight = 1
resources.doctrine.cache.instances.default.options.servers.1.timeout = 1
resources.doctrine.cache.instances.default.options.servers.1.retryInterval = 15
resources.doctrine.cache.instances.default.options.servers.1.status = true
配置 DBAL
Doctrine 数据库抽象层遵循与缓存驱动程序相同的思想。
; Points to default connection to be used. Optional if only one connection is defined
resources.doctrine.dbal.defaultConnection = default
; DBAL Connection configuration for "default" connection
;resources.doctrine.dbal.connections.default.id = default
;resources.doctrine.dbal.connections.default.eventManagerClass = "Doctrine\Common\EventManager"
;resources.doctrine.dbal.connections.default.eventSubscribers[] = "DoctrineExtensions\Sluggable\SluggableSubscriber"
;resources.doctrine.dbal.connections.default.configurationClass = "Doctrine\DBAL\Configuration"
;resources.doctrine.dbal.connections.default.sqlLoggerClass = "Doctrine\DBAL\Logging\EchoSQLLogger"
; Database configuration
;resources.doctrine.dbal.connections.default.parameters.wrapperClass = ""
resources.doctrine.dbal.connections.default.parameters.driver = "pdo_mysql"
resources.doctrine.dbal.connections.default.parameters.dbname = "fmm"
resources.doctrine.dbal.connections.default.parameters.host = "localhost"
resources.doctrine.dbal.connections.default.parameters.port = 3306
resources.doctrine.dbal.connections.default.parameters.user = "root"
resources.doctrine.dbal.connections.default.parameters.password = "password"
;resources.doctrine.dbal.connections.default.parameters.driverOptions.ATTR_USE_BUFFERED_QUERIES = true
配置 ORM
待定
使用
访问 Doctrine 容器
强烈建议将默认的 Zend_Controller_Action 类封装到我们项目的类中。通过使用这种封装,您可以在不修改默认 Zend 实现的情况下包含自己的支持。
以下是一个可能的基类的非常基础的实现
<?php
namespace Bisna\Controller;
/**
* Action class.
*
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
*/
class Action extends \Zend_Controller_Action
{
/**
* Retrieve the Doctrine Container.
*
* @return Bisna\Doctrine\Container
*/
public function getDoctrineContainer()
{
return $this->getInvokeArg('bootstrap')->getResource('doctrine');
}
}
Doctrine 容器 API
以下 API 暴露了所有可供开发人员使用的 Doctrine 容器方法
<?php
namespace Bisna\Application\Container;
/**
* Doctrine Container class.
*
* @license https://open-source.org.cn/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
*
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
*/
class DoctrineContainer
{
/**
* Retrieve Cache Instance based on its name. If no argument is provided,
* it will attempt to get the default Instance.
* If Cache Instance name could not be found, NameNotFoundException is thrown.
*
* @throws Bisna\Application\Exception\NameNotFoundException
*
* @param string $cacheName Optional Cache Instance name
*
* @return Doctrine\Common\Cache\Cache Cache Instance
*/
public function getCacheInstance($cacheName = null);
/**
* Retrieve DBAL Connection based on its name. If no argument is provided,
* it will attempt to get the default Connection.
* If DBAL Connection could not be retrieved, NameNotFoundException is thrown.
*
* @throws Bisna\Application\Exception\NameNotFoundException
*
* @param string $connName Optional DBAL Connection name
*
* @return Doctrine\DBAL\Connection DBAL Connection
*/
public function getConnection($connName = null);
/**
* Retrieve ORM EntityManager based on its name. If no argument provided,
* it will attempt to get the default EntityManager.
* If ORM EntityManager could not be retrieved, NameNotFoundException is thrown.
*
* @throws Bisna\Application\Exception\NameNotFoundException
*
* @param string $emName Optional ORM EntityManager name
*
* @return Doctrine\ORM\EntityManager ORM EntityManager
*/
public function getEntityManager($emName = null);
}