plemi / boomgo-bundle
Boomgo 轻量级 PHP ODM for MongoDB 的打包工具
Requires
- retentio/boomgo: dev-master
- symfony/framework-bundle: 2.1.*
Requires (Dev)
- mageekguy/atoum: dev-master
This package is not auto-updated.
Last update: 2024-09-28 12:06:37 UTC
README
此打包工具为 Boomgo 提供了 Symfony2 集成:它是一个轻量级且简单的数据映射器,用于 PHP 和 MongoDB。
温和的介绍
此打包工具中可以找到什么
- 一个 manager,以简化作为公共服务(DIC FTW)定义的 Repository 类的使用
- 用于从您标记为注释的类生成 Mapper 和 Repository 的 控制台命令
欢迎 Symfony2 开发者、评论和拉取请求!
如何安装?
首选方式是使用 Composer,因为它还会下载依赖项,并具有内置的自动加载器。在项目根目录级别,创建/更新一个 composer.json 文件,包含
{
"require": {
"plemi/boomgo-bundle": "dev-master"
}
}
否则,您可以直接使用 Git 在您的 vendor 目录中直接克隆 Boomgo 和 PlemiBoomgoBundle,但鉴于您之前已经这样做过,以及有大量的示例,我们在此不进行描述。
以下是您必须在您的 autoloader 中注册的 2 个命名空间
<?php // app/autoload.php 'Boomgo' => 'path/to/vendor/Retentio/Boomgo/src', 'Plemi' => 'path/to/vendor/bundles',
最后但同样重要的是,在您的 AppKernel 中注册它
<?php // app/AppKernel.php $bundles = array( ... new Plemi\Bundle\BoomgoBundle\PlemiBoomgoBundle(), ... );
如何使用它?
此打包工具只需一个要求:您必须定义至少一个连接(但可以注册所需的任何数量)。
连接 代表一个数据库名称、服务器和多种选项,与 PHP Mongo 相同。
plemi_boomgo: connections: myLocalConnection: database: myMongoDatabase
默认情况下,此打包工具使用 default_connection 名称,默认为 default。在前面代码片段中的更改如下
plemi_boomgo: default_connection: myLocalConnection connections: myLocalConnection: database: myMongoDatabase
需要更多连接定制?以下是一个完整的示例
plemi_boomgo: default_connection: myLocalConnection connections: myLocalConnection: database: myMongoDatabase myRemoteConnection: server: my.remotedomain.com database: myMongoDatabase options: connect: true replicatSet: myReplicaSet
您必须根据 Boomgo 说明 定义您的文档映射。顺便说一句,官方网站即将推出。
然后我们需要生成 Mapper 和 Repository 类
php app/console boomgo:generate:mappers MyBundleName php app/console boomgo:generate:repositories MyBundleName
现在我们已经定义了配置、生成了映射器和存储库,技巧是什么?此打包工具将重工作交给存储库类:但取决于您!
您可以通过调用管理服务,请求有效文档的存储库类来按需获取,或者直接在生成的存储库类中存储您的实现。注意未来的生成过程,因为它会重写整个文件。
好吧,让我们假设我们想要查询用户集合并获取最新的五个
<?php // My\Bundle\Repository\UserRepository.php public function findOneByNameAndAge($name, $age) { // Declare your query $query = array('name' => $name, 'age' => $age) // Process it $results = $this->getMongoCollection()->findOne($query); // MongoCursor to Document object $document = $this->getMapper()->unserialize($results) return $document; }
然后我们能够调用
<?php // My\Bundle\Controller\UserController.php $repository = $this->container->get('plemi_boomgo.manager')->getRepository('My\Bundle\Document\User'); $user = $repository->findOneByNameAndAge('foo', 23);
等等,单元测试怎么办?
为了运行单元测试,您必须通过 Composer 安装 atoum,然后这样执行它
php composer.phar update --dev php vendor/bin/atoum -d Tests
就这样结束了吗?
作为路线图,计划的功能包括
- 一个真正的查询记录器
- 在 Symfony2 WebDebugToolbar 中的一个专用选项卡