etenil/objectomatic

一个轻量级的PHP ORM,只做最小化的事情。

dev-master 2013-04-14 22:06 UTC

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):删除对象的表。