PHP-如何拦截PDO调用?
作者:互联网
我正在尝试在我正在开发的基于PHP的产品中实现插件API.我创建了一个从PHP的PDO类继承的类,然后添加了一些额外的方法.麻烦的是,我想在插件API中拦截PDO的.query()、. exec()、. execute()和.fetchAll()之类的东西,处理传递给/从那些方法传递的参数.我尝试使用__call($method,$args)拦截器技术,但是在这种情况下它不起作用,因为我无法将PDO方法标记为受保护.
如何创建一个从PDO继承的类,然后在将PDO类方法发送给父类之前对其进行拦截?目的是拦截传入/传自这些方法的参数,以便我的插件API可以正常工作.这是我正在使用的产品的插件API中没有的缺失部分.
解决方法:
无需继承PDO,只需将其包装即可.
只是一个例子:
class MyDB {
private $dbh;
public function __construct($dsn, $username, $password, $driver_options = array()) {
$this->dbh = new PDO($dsn, $username, $password, $driver_options);
}
public function query($statement) {
//do something you want
//...
return $this->dbh->query($statement);
}
//and so on....
}
标签:oop,inheritance,overloading,php,pdo 来源: https://codeday.me/bug/20191101/1985704.html