问题描述:
都知道自PHP 5.1.0 起,PDO就算是PHP的标配的一部分了,PDO提供了3个类PDO
,PDOStatement
和PDOException
,PDOException
这个类就不用说了,功能和定位啥的看名字都很清楚。
那么问题来了:为什么会同时存在PDO
和PDOStatement
这两个类?
为什么会有这样的疑问,先看下图(图片截取自@PHP官网手册):
图片是PDO
和PDOStatement
类所声明的方法,可以看出,这两个类提供的方法虽然绝大部分不同,但是明显核心方法有重叠或重复,比如:
PDO::query()
,PDO::exec()
都是执行一条SQL语句,只是返回不同PDOStatement::execute()
也是执行一条SQL语句,只是语句被预处理过
PDOStatement::execute()
还好说,而PDO::query()
和 PDO::exec()
同时存在的必要性又是什么呢?而且还会造成使用和理解上面的不畅。
好吧,就算有同时存在的必要性
那么还是有一点为什么要同时存在这两个类呢?而不是一个类(假如只有 PDO
类)就将这两个类所能做的事情一起做了呢?PDO
类和 PDOStatement
类之间是什么关系呢?
如果 PDO
类用来执行SQL和管理链接,而 PDOStatement
类只用来处理结果集,那么感觉就舒服顺畅多了。
希望有大牛能给予解释 PHP
的 PDO
这么设计的考虑是什么,真诚感谢~
我的理解是,一个用来执行普通的SQL,另外一个可以进行参数绑定之类的……