编程语言
首页 > 编程语言> > PHP-如何拦截PDO调用?

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