etenil / objectomatic
一个轻量级的PHP ORM,只做最小化的事情。
This package is not auto-updated.
Last update: 2024-09-24 03:23:23 UTC
README
版权 (c) 2013 Guillaume Pasquet, boss@etenil.net http://etenil.net 根据 GPLv3 许可证授权
版本 0.1
安装
如果您使用 Composer,则只需将 objectomatic 添加到依赖项中,然后运行 composer install
。
如果您希望直接使用库,则 src
文件夹中提供了一个 load.php
文件,该文件将为您加载所有对象。
最后,如果您想将 objectomatic 作为 Assegai 安装的一部分使用,则请将文件夹放置在自定义模块文件夹中。然后您可以按如下方式配置连接
$conf['modules'] = array(
'objectomatic',
);
$conf['objectomatic'] = array(
'host' => 'localhost',
'database' => 'database',
'username' => 'username',
'password' => 'password',
);
使用方法
首先需要连接到数据库。这通过实例化数据库驱动程序来完成。目前只支持 MySQL。
$db = new \objectomatic\MySQLPDO(array(
'host' => 'localhost',
'database' => 'database',
'username' => 'username',
'password' => 'password',
'port' => 3336 // Optional
));
需要创建可以由 objectomatic 存储的对象。这些对象需要扩展 objectomatic\Storable
类。它们可以有任何数量的字段,但自动添加的 id 字段除外。
字段是属性,但需要在 _type_init()
方法中实例化,如下所示
class Person extends \objectomatic\Storable
{
protected $_name;
protected $_color;
function _type_init() {
$this->_name = new \objectomatic\fields\Char(array('max_length' => 64));
$this->_color = new \objectomatic\fields\Text();
}
function getName() {
return $this->_name->getVal();
}
function setName($val) {
$this->_name->setVal($val);
return $this;
}
function getColor() {
return $this->_color->getVal();
}
function setColor($val) {
$this->_color->setVal($val);
return $this;
}
}
注意,之后不应直接访问属性,而应使用它们的 getVal()
和 setVal()
方法。
字段
字段是实现了 \objectomatic\fields\IField
接口的对象。它们只是值的容器,也可以在运行时进行验证,并可以转换为原生数据库类型。
Objectomatic 在命名空间 \objectomatic\fields
中提供了以下字段
- 二进制
- 布尔
- 字符
- 日期
- 日期时间
- 电子邮件
- 文件路径
- 浮点
- 整数
- IP 地址
- 空布尔
- 正整数
- 文本
- 时间
- URL
字段可以接受选项,其中一些甚至需要选项。字段选项作为关联数组传递给字段的构造函数。可用选项包括
- max_length
- null: 字段是否可为空
关于 NULL 的话:NULL 是数据库和 PHP 中的一个特殊值。这可能会引起问题,因此当数据库值设置为 NULL 时,字段使用 NullFieldValue 类的实例。
驱动程序方法
可存储对象被认为是无生命的。驱动程序通过一系列方法来完成这项艰巨的工作
load(Storable $object, $id = null)
:将值加载到 $object 中。如果 $object 设置了 ID,则加载该 ID。为了方便,您也可以立即指定 ID。loadMulti(Storable $object, $where = null)
:相当于 SQL select。$object 仅用于其类型,$where 是 SQL 中的 WHERE 部分。返回一个 $objects 数组。create(Storable $object)
:创建与对象关联的表。insert(Storable $object)
:将对象保存到数据库中。还会将保存的 ID 填充到 $object 的 id 中。update(Storable $object)
:在数据库中更新 $object。$object 必须 有一个 id。updateMulti(Storable $replacement, $where = null)
:在数据库中更新多个对象。$replacement 用于其类型,也可以用来替换非 NullFieldValue 的字段。delete(Storable $object)
:删除对象。deleteMulti(Storable $object, $where = null)
:根据 SQL $where 子句删除多个对象。drop(Storable $object)
:删除对象的表。