开发者学堂课程【PHP 进阶教程-由浅入深掌握面向对象开发-第三阶段:封装 PDO(读操作+测试)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/713/detail/12747
封装 PDO(读操作+测试)
1、增加读方法:对外调用
#读方法:按条件进行单行或者多行数据返回
public function my_query(Ssql,Sonly true){
try{
Sstmt Sthis->pdo->query($sql);
#设置查询模式
Sstmt->setFetchMode(Sthis->fetch_mode);
}catch(PDOException Se){
return Sthis->my_exception(Se);
}
#数据解析
if(Sonly)
return $stmt->fetch(),
else
return $stmt->fetchAl1(;
}
进行读操作那读的操作,应该是有什么?独一条和读多条之分。怎么实现看具体的业务需求。如果想变成两个方法,一个是获取一条,一个是获取多条,就写两个方法。如果我想要做成一个方法,就要通过参数来进行控制。
此时通过参数做一个控制,给我一个SQL指令,将进行判定。默认获取一条,接下来第一件事情是执行SQL。调用pdo执行,而执行的过程是有可能出错的,所以try起来,try起来就是抓错误而抓到了错误之后。如果没有错误继续的话,要考虑我们数据出的模式要正常,用户设定需要根据用户要求模式来写,所以我们要给它增加设置模式。这也是一种错误的检查需要。第一,如果得到的不是对象查询语句就有问题,是返回false,false走到此处不可以调用对象方法。所以他必须要是一个pdo statement类的对象才能去调用这个方法,而设置的过程中,有可能设置的模式跟当前的模式根本就不允许。那也有可能出错,所以把这两部分都给他抓起来,抓起来有问题就会去处理。没有问题,说明这个对象是正常存在的,就可以判定去获取方式,因为这段代码没有必要再进行异常捕捉,即因为不会出错。应该放到外面来,不要在里面去实现,这就是读方法。
对应的my exception my exec存在,对应的共有私有属性存在,类的控制存在整个分装完毕。首先看语法是否存在问题
不存在问题。
2.查询
$m=new MyPDO();
sres =$m->my_query('select from t_40',false);
var_dump($res);
测试数据,查数据my_query(拿结果看是否是需要的)先看运行,运行没问题查看结果是否正确,
刷新得到数据
如果查看多条加入flase,刷新
sres =$m->my_query('select from t_40',false);
3.查看得到的内容
$m new MyPDO()
$res=$m->my_exec('delete from t_28 limit 2');
var_dump($res);
删除2行
说明操作成功
至于ID只需要做新增操作尝试就可以,新增操作的my exec判定是没有问题的。另外一种方法也肯定是没有问题的.测试完成,测试代码全部删除,此时已经完成。
有一点细节需要注意:类是在别的地方使用的,别的地方使用的时候把文件引入进去,使用的时候注意命名空间,必须要指定空间,或者说从空间里面把my pdo引入过去才能使用。
关于pdo的二次封装就做完了,如果还有一些其他的业务,比如事务处理,应该再封装事务操作的方法,如果要做预处理,同样可以去封装。总而言之一句话,要把它变得越复杂,就多封装一些功能,如果只是为了解决基本的增删改查,到此就够了。这就是pdo类的二次封装。