jrschumacher / modomo
轻量级、以代理为中心、基于事件的 MongoDB PHP ODM
Requires
- php: >=5.3.2
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ŏ)
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')); ?>