maximo-perez-villalba/framework-dao

该项目实现了一个轻量级的面向对象持久化框架,用PHP编写。该框架基于DAO(数据访问对象)设计模式,虽然其主要目的是教学,但框架功能齐全。

1.6.0 2022-05-02 03:53 UTC

This package is auto-updated.

Last update: 2024-09-08 22:28:07 UTC


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对象之间的低耦合。

image:uml-clas-dao-pattern.png

类图显示了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扩展列表

  • DAODB:通过PDO实现的框架-dao数据库扩展。
  • DAOJson:通过Json文件实现的框架-dao对象持久化扩展。