轻量级、以代理为中心、基于事件的 MongoDB PHP ODM

v0.6.0 2013-01-18 00:00 UTC

This package is not auto-updated.

Last update: 2024-09-14 13:38:44 UTC


README

请使用 https://github.com/purekid/mongodm

Modomo (mŏ-dŏ-mŏ)

Latest Stable Version Latest Unstable Version

Modomo 是一个轻量级的基于事件的 PHP MongoDB ODM

设计用于 ODM 的好处(获取器和设置器、验证和辅助工具),同时保持快速开发和低入门门槛。在此同时,代理 MongoDB 核心PHP 类以直接访问 MongoDB 驱动程序;此处没有自定义程序。

功能

  • 基本 ODM 功能
  • 简单的文档类
  • 简单的集合类
  • 验证
  • 事件和回调
  • 直接访问 MongoDB 驱动程序

要求

  • PHP 5.3+
  • MongoDB 驱动程序

安装

手册

将源文件提取到您的应用程序库路径中的一个目录中。可以自动加载或要求加载所有类。

Composer

使用 Packagist[jrschumacher/modomo] 通过 Composer 添加,将其添加到您的 composer.json 中

{
    "require": {
        "jrschumacher/modomo": "0.6.*"
    }
}

用法

使用 Modomo 非常简单。作为一个基本的规则,如果您使用 Modomo\MongoClient(),其他一切都将迎刃而解。但这并不局限于这一点,在任何时候,您都可以将 Mongo 核心类对象转换为 Modomo 对象。

基本

使用 MongoDM,只需声明扩展基本 ODM 类并指定命名空间即可。

<?php
    namespace Collections;

    class Person {}
?>
<?php
    namespace Documents;

    class Person {}
?>
<?php
    use Modomo\MongoClient;
    use Documents\Person;

    $m = new MongoClient();
    $db = $m->test;
    $coll = $db->person;

    $bob = new Person(array(), $coll);
    $bob->name = "Bob";
    $bob->save();

    $people = $coll->find();
    $bob = $people->getNext();
    $bob->getDoc; // array('name' => 'Bob', '_id' => array('$id' => '12345....'));
?>

配置

Modomo 支持一些配置以存储您的集合和文档。这可以通过具有一些静态变量的 Modomo\Config 类简单地更改,以帮助您。

警告:由于其动态特性,它将改变未来的状态。

<?php
    // Assuming MongoDB collection is "people"

    // For collections
    Modomo\Config::$collectionNS;                                   // \Collections\People.php
    Modomo\Config::$collectionNS = 'App\\Collection';               // \App\Collection\People.php
    Modomo\Config::$collectionClass = '{{mongo.coll}}Collection';   // \App\Collection\PeopleCollection.php

    // For documents
    Modomo\Config::$documentNS;                                     // \Documents\People.php
    Modomo\Config::$documentNS = 'App\\Document';                   // \App\Document\People.php
    Modomo\Config::$documentClass = '{{mongo.coll}}Document';       // \App\Document\PeopleDocument.php
?>

命名空间

集合或文档的命名空间可以通过 $collecionNS$documentNS 变量进行更改。默认情况下,它们分别解析为 \Collections 和 '\Documents'。

注意:实现子命名空间时请使用双斜杠 \\

<?php
    // To change the name space to \XYZ
    Modomo\Config::$collectionNS = 'XYZ';
    // To change the namespace to \XYZ\ABC
    Modomo\Config::$collectionNS = 'XYZ\\ABC';
?>

类名

集合和文档的类名可以通过 $collectionClass$documentClass 变量进行更改。默认情况下,它们解析为 MongoDB 集合的名称(首字母大写,如 PSR-1)。

执行字符串替换以提供对类名的更多灵活性。以下是一份支持模式的列表

<?php
    // To change the class name to XYZ (not a good idea)
    Modomo\Config::$collectionClass = 'XYZ';
    // To change the class name to AwesomePeopleCollection
    Modomo\Config::$collectionClass = 'Awesome{{mongo.coll}}Collection';
?>
 Pattern                Description
-------------------------------------------------------------------------
{{mongo.coll}}          Replaced with the collection name StudlyCapped

根据请求和讨论将添加其他替换

注意

  • mongo 是 MongoDB 相关替换的保留词

文档

CRUD 方法

其他方法

验证器

事件/回调

Modomo 中存在许多事件。您可以通过将您的可调用方法注册到您的集合中来实现这些事件。

事件钩子

  • beforeCreate
  • beforeCreateNew
  • afterCreate
  • afterCreateNew
  • beforeSave
  • beforeSaveNew
  • afterSave
  • afterSaveNew
  • beforeValidation
  • afterValidation
  • beforeDestroy

在一个新的、保存、销毁周期中,验证按以下顺序调用

beforeCreateNew -> afterCreateNew -> beforeValidation -> afterValidation -> beforeSaveNew -> afterSaveNew -> beforeDestroy

<?php
    namespace Collections;

    class Person {}

    $beforeSaveCallback = function() {};

    Person::registerEvent('beforeSave', $beforeSaveCallback, array('param1', 'param2'));
?>