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