drakojn / io
一个简单且高效的数据映射库,旨在连接任何数据源
此包的官方仓库似乎已消失,因此包已被冻结。
0.2.1
2015-07-03 18:20 UTC
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: 4@stable
- squizlabs/php_codesniffer: ~1.5.4
This package is not auto-updated.
Last update: 2023-04-10 18:57:25 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 项目页面的问题中进行了映射 - 如果您发现任何问题,请在那里创建一个问题。
更好的是:帮助此项目的编码或文档工作。开发者和开源社区将非常感激。