螃蟹学PHP设计模式之数据访问对象模式

3.数据访问对象模式

今天又要上班了,不过公司的事情倒不多,先花点时间回忆之前学的两个设计模式吧......好,复习完了,开始学习新的数据访问对象模式。螃蟹发现其实之前的项目基本都用上了数据访问对象模式,因为在程序中手写sql实在是效率不高且不易于维护。这就好比你有个亲戚在美国,你每个月都想送点东西给他,然后你每次都要做飞机汽车跑到他哪儿去,东西给他再风尘仆仆地回来,结果有一天你突然发现有快递这服务,你每次把东西交给快递就啥事不管了,由此感叹真方便啊。其实螃蟹也觉得数据访问对象模式真的如同快递员一样方便,之前用过的各种PHP MVC框架和JAVA WEB框架以及Python ORM框架等,无不采用了这种设计模式。在操作数据库时,可以先建一个Base抽象类来创建连接,再每个表对象继承抽象类,实现对表的操作。

参考项目模块:数据库访问层

这个数据库访问层螃蟹觉得还是很重要的,最开始做项目的时候基本都是自己写的,现在用了框架之后确实没怎么在意了,以后还是要多研究一下框架技术,不能依赖框架,这样螃蟹怎么能拿到好的offer.

数据库连接基类:BaseConnect.class.php

<?php
class BaseDAO{
	protected $_connection = null;
	protected $_username = ‘root‘;
	protected $_password = ‘‘;
	protected $_host = ‘127.0.0.1‘;
	protected $_db = ‘test‘;
	protected $_charset = ‘UTF8‘;

	function __construct(){
		$this->__connect();
	}

	private function __connect(){
		$this->_connection = mysql_connect($this->_host,$this->_password,$this->_password);
		mysql_select_db($this->_db,$this->_connection);
		mysql_query(‘set names ‘.$this->_charset,$this->_connection);
	}

	//添加数据
	public function add($datas){
		$keys = array();
		$values = array();
		foreach($datas as $k => $v){
			array_push($keys, $k);
			array_push($values,‘"‘.$v.‘"‘);
		}
		$sql = ‘insert into ‘.$this->_table.‘(‘.implode(‘,‘, $keys).‘) values(‘.implode(‘,‘, $values).‘)‘;
		$res = mysql_query($sql,$this->_connection);
		return $res;
	}
}
?>

用户表数据结构:

CREATE TABLE `user` (
`id` int(11) NOT NULL,
`username` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
;

用户数据库访问对象:UserDAO.class.php

<?php
require(‘BaseDAO.class.php‘);

class UserDAO extends BaseDAO{
	protected $_table = ‘user‘;

	public function add($datas){
		parent::add($datas);
	}
}
?>

最后螃蟹测试看看: TestDAO.php

<?php
require(‘UserDAO.class.php‘);

//模拟用户数据
$user = array(‘username‘=>‘螃蟹‘,‘password‘=>‘ok123456‘);
//实例化数据库连接层
$userobj = new UserDAO();
//添加数据
$userobj->add($user);

?>

运行看看,数据添加上了就完成了。这个DAO模式还是挺不错的,这次学习也是对之前写的东西进行回顾,可能很多东西自己能写出了,但是不知道这到底叫什么,这就做不到有理可依了。在公司盖着被子吹空调,真忒么冷...... 

螃蟹学PHP设计模式之数据访问对象模式

时间: 2024-10-16 02:24:05

螃蟹学PHP设计模式之数据访问对象模式的相关文章

PHP设计模式系列 - 数据访问对象模式

数据访问对象模式 数据访问对象模式描述了如何创建透明访问数据源的对象. 场景设计 设计一个BaseDao基类,实现数据库操作基本的一些query,insert,update方法 在实际使用的过程中,继承BaseDao,就可以直接调用基类的数据库操作方法 代码:BaseDao 数据库操作基类 <?php //数据访问对象模式 //将数据库访问层脱离出来 作为公用的访问接口,方便用户开放,是php中常用的一种设计模式 class BaseDao { private $db; public funct

【设计模式】数据访问对象模式

数据访问对象模式(Data Access Object Pattern)或 DAO 模式用于把低级的数据访问 API 或操作从高级的业务服务中分离出来.以下是数据访问对象模式的参与者. 数据访问对象接口(Data Access Object Interface) - 该接口定义了在一个模型对象上要执行的标准操作. 数据访问对象实体类(Data Access Object concrete class) - 该类实现了上述的接口.该类负责从数据源获取数据,数据源可以是数据库,也可以是 xml,或者

Java数据访问对象模式

数据访问对象模式或DAO模式用于将低级数据访问API或操作与高级业务服务分离. 以下是数据访问对象模式的参与者. 数据访问对象接口 - 此接口定义要对模型对象执行的标准操作. 数据访问对象具体类 - 此类实现上述接口. 这个类负责从数据源获取数据,数据源可以是数据库/xml或任何其他存储机制. 模型对象或值对象 - 此对象是简单的POJO,包含用于存储使用DAO类检索的数据的get/set方法. 实现实例 在这个将创建一个作为Model或Value对象的Student对象. StudentDao

螃蟹学PHP设计模式之建造者模式

2.建造者模式 螃蟹今天要学习建造者模式了,昨天的适配器记得还是很清楚的.对于建造者模式,螃蟹的理解是你有10部iphone手机要充电,假设充电器额定电压都是220v,但是外电压不稳定,可能是220v,也可能是240v,或是300v,这个时候怎么办,可行的方法是购置一个家用变压器,把充电器都连在变压器上,不需要直接连在外电网上,无论外电压如何变化,只需要操作变压器即可.这个比喻可能有些牵强,不过还是能够说明建造者模式的用途,就是原对象可能是可变的,包括接收的参数或是方法等,但是如果我们已经在程序

螃蟹学PHP设计模式之适配器模式

之前对java的设计模式略有了解,但是螃蟹目前是靠PHP吃饭,所以对于进阶学习php设计模式还是很有必要.螃蟹虽然做开发两年了,但是在老鸟眼中还是菜鸟,为了自己写的代码更容易维护和进行团队协作,所以我要搞定设计模式.希望螃蟹今年能创业成功或找个好工作. 1.适配器模式 螃蟹的理解是你买了港行的iphone手机,发现自家的插座和手机自带的插头不配,怎么办呢,就需要一个转换器(适配器).可能原来系统的类不是你设计的,但是现在你要使用原来的类,发现有问题,但原来的类又不能动,或者不需要动,这样你写一个

winform中利用反射实现泛型数据访问对象基类

考虑到软件使用在客户端,同时想简化代码的实现,就写了一个泛型的数据访问对象基类,并不是特别健全,按道理应该参数化的方式实现insert和update,暂未使用参数化,抽时间改进. /// <summary> /// DAO基类 实体名必须要与数据表字段名一致 /// </summary> /// <typeparam name="T"></typeparam> public class BaseDao<T> where T :

Yii的学习(2)--数据访问对象 (DAO)

摘自Yii官网:http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.dao Yii提供了强大的数据库编程支持.Yii数据访问对象(DAO)建立在PHP的数据对象(PDO)extension上,使得在一个单一的统一的接口可以访问不同的数据库管理系统(DBMS).使用Yii的DAO开发的应用程序可以很容易地切换使用不同的数据库管理系统,而不需要修改数据访问代码. 数据访问对象(DAO) 对访问存储在不同数据库管理系统(DBMS)中的数据提

SSH.net之数据访问对象(DAO)

一.新建一个类库,命名为:DAO 二.新建接口:IRepository using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Repository { public interface IRepository<T> { void Delete(T entity); T Get(object id); object Save(T entity); void U

解析大型.NET ERP系统数据访问 对象关系映射框架LLBL Gen Pro

LLBL Gen Pro是一个为.NET开发人员设计的的对象关系映射(ORM)框架,与NHibernate,Entity Framework等框架一样,通过实体与数据表的映射,实现关系数据库持久化. 1  LLBL Gen Pro 入门  LLBL Gen Pro Basic 打开LLBL Gen Pro程序,在右边的数据库浏览器(Catelog Explorer)中根结点右键选择从关系数据库创建关系模型( Add Relational Model Data from a Database),然