plemi/boomgo-bundle

此软件包最新版本(dev-master)没有提供许可证信息。

Boomgo 轻量级 PHP ODM for MongoDB 的打包工具

安装: 8

依赖项: 0

建议者: 0

安全性: 0

星星: 1

关注者: 3

分支: 0

开放性问题: 0

类型:symfony-bundle

dev-master 2012-07-08 16:18 UTC

This package is not auto-updated.

Last update: 2024-09-28 12:06:37 UTC


README

此打包工具为 Boomgo 提供了 Symfony2 集成:它是一个轻量级且简单的数据映射器,用于 PHPMongoDB

Build Status

温和的介绍

此打包工具中可以找到什么

  • 一个 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 中的一个专用选项卡