maximo-perez-villalba / framework-dao
该项目实现了一个轻量级的面向对象持久化框架,用PHP编写。该框架基于DAO(数据访问对象)设计模式,虽然其主要目的是教学,但框架功能齐全。
1.6.0
2022-05-02 03:53 UTC
Requires
- php: >=7.4
README
该项目实现了一个轻量级的面向对象持久化框架,用PHP编写。该框架基于DAO(数据访问对象)设计模式,其主目的是教学。
安装
可以通过Composer安装 framework-dao
。
1 从命令行进入项目目录并执行
composer require maximo-perez-villalba/framework-dao
2 在 composer.json
文件的 "require"
部分添加
"require": {
"maximo-perez-villalba/framework-dao": ">=1.0.0"
},
2.1 然后从命令行执行
composer update
文档
DAO模式
DAO模式提出了一种在多种存储介质(如xml、json、关系型或非关系型数据库、云存储等)中持久化对象的解决方案。它旨在使对象模型与具体存储介质解耦,并允许同时存在多种存储介质。
在讨论对象持久化时,需要四种基本操作
- 保存 新对象
- 读取 一个或多个对象
- 更新 对象
- 删除 对象
这些操作以CRUD(创建、读取、更新、删除)的缩写形式为人所熟知。
DAO模式的实现基于结构型模式 装饰器。因此,DAO对象封装了模型对象。这种方式允许模型对象与实现持久化逻辑的DAO对象之间的低耦合。
类图显示了DAO模式的实现设计,将所有CRUD行为放入 DAO 类中,并要求模型对象从 Persistent 类扩展。
如何使用
<?php
// Para obtener una instancia de la clase DAO.
$dao = new DAO( $objectPersistent );
// También puedo obtener una instancia de la clase DAO desde el objeto persistible.
$dao = $objectPersistent->dao();
// Para guardar un nuevo objeto de modelo en el medio de almacenamiento.
$dao->create();
// Para sincronizar los cambios de un objeto de modelo.
$dao->update();
// Para borrar un objeto de modelo.
$dao->delete();
// Para recuperar un o más objetos de modelo almacenados.
$list = DAO::read( 'filtro/s de selección', ['argumento1'=>'value1', 'argumentoN'=>'valueN'] );
通过这种方式,DAO类提供了一个高级接口,允许解耦模型对象与存储介质,同时也解耦了针对每种存储介质的具体实现。
DAO扩展
该项目包含DAO模式的通用实现。要使用它,需要通过一些特定的扩展来实现对每种存储介质的支持。
DAO扩展列表