一个简单且高效的数据映射库,旨在连接任何数据源

此包的官方仓库似乎已消失,因此包已被冻结。

0.2.1 2015-07-03 18:20 UTC

README

Drakojn 是一套旨在简单有效的 Web 开发库。此套库包含小型的库,易于连接到您当前的或未来的项目。

Io

Io 是一个小型工具,旨在以简单的方式抽象持久性。想法是保持您的模型/数据类不变,并提供一种简单的方法将它们连接到关系型(或非关系型)数据库、文本文件、Web 协议和服务等。

使用方法

想象您有以下类

namespace Dummy\Data;

class User
{
    protected $id;
    protected $alias;
    protected $name;
    protected $email;

    /* all setters and getters here */
}

您在您的 RDBMS 上有一个这样的表

Table user
___________________________________________________________________
|id_user (PK)|login        |name         |email       |password   |
___________________________________________________________________
|1           |duodraco     |Anderson...  |o@duodr...  |*****      |
___________________________________________________________________
|2           |alganet      |Alexandre..  |alexandre...|*****      |
 __________________________________________________________________
|3           |hagiro       |Augusto...   |augusto.h...|*****      |
___________________________________________________________________

您只需要这样设置 Drakojn\Io\Mapper\Map 对象

$map = new Drakojn\Io\Mapper\Map(
    'Dummy\\Data\\User', //local class
    'user', // remote entity, the table
    'id', //local attribute used to identify this object through remote part
    [
        'id' => 'id_user',
        'alias' => 'login',
        'name' => 'name',
        'email' => 'email'
    ] //map between local class and remote presistency part
);

设置通信驱动程序

$driver = new Drakojn\Io\Driver\Pdo(
  new \PDO('mysql:host=localhost;dbname=dummy','your-user','your-password')
);

创建映射器

$userMapper = new Drakojn\Io\Mapper($driver, $map);

然后开始使用

$allUsers = $userMapper->find();// gets all "records"
$myself = $userMapper->findByIdentifier(1);
$gaigalas = $userMapper->find(['login'=>'alganet']);
$someoneIDontLike = $userMapper->find(['name'=>'something bad']);
$klaus = new User;
$klaus->setAlias('klaus');
$klaus->setName('Klaus Silveira');
$userMapper->save($klaus);
$userMapper->delete($someoneIDontLike);

现在想象一下,您不能使用 RDBMS,并且唯一的持久化方式是文件系统。没问题。您可以使用另一个驱动程序

$fileDriver = new Drakojn\Io\Driver\File('/path/to/store/your/objects/');
$userMapper = new Drakojn\Io\Mapper($fileDriver, $map);

或者如果您想要一个基于 json 的文件

$descriptor = new Drakojn\Io\Driver\Descriptor\Json;
$fileDriver = new Drakojn\Io\Driver\File('/path/to/store/your/objects/', $descriptor);
// or even a php serialized file:
$fileDriver->setDescriptor(new Drakojn\Io\Driver\Descriptor\Php);

并且像使用 RDBMS 一样开发。您(或 Drakojn 开发者)(或您作为 Drakojn 开发者)可以在多个源之间进行交换策略。

路线图

  • IMAP 驱动程序
  • 专用 PDO 驱动程序
  • NoSQL 数据库驱动程序
  • RESTful 驱动程序

变更日志

  • 0.2.1 - 更新和选择修复 - 在寻找本地键而不是远程键时中断
  • 0.2.0 - 更改 PDO 驱动程序的家族结构
  • 0.1.0 - 将 File 移动到 Stream 家族,包括新的 GS 驱动程序,添加了流格式化的描述符
  • 0.0.3 - 添加 Ant 和 Phing 的构建文件 - 质量保证
  • 0.0.2 - 添加 FileDriver
  • 0.0.1 - 首次发布,通过 PDO 实现基本映射

注意

这是一个处于早期开发阶段的库,可能存在许多问题。一些问题已经在 GitHub 项目页面的问题中进行了映射 - 如果您发现任何问题,请在那里创建一个问题。

更好的是:帮助此项目的编码或文档工作。开发者和开源社区将非常感激。