扩展 PDO 语句类
是否可以扩展 PHP PDO 语句类以向其添加自定义方法?这与扩展基本 PDO 类不同。如果是这样,那么如何去做,因为语句类仅在通过PDO类运行查询时才返回?
是否可以扩展 PHP PDO 语句类以向其添加自定义方法?这与扩展基本 PDO 类不同。如果是这样,那么如何去做,因为语句类仅在通过PDO类运行查询时才返回?
您可以使用 PDO::setAttribute() 设置
该类:
PDO::ATTR_STATEMENT_CLASS:设置从 PDOStatement 派生的用户提供的语句类。不能与持久性 PDO 实例一起使用。需要数组(字符串类名,数组(混合constructor_args))。
例:
$pdo->setAttribute(PDO::ATTR_STATEMENT_CLASS, [Custom::class]);
这是由用户在PDO下的PHP手册中回答的:
class Database extends PDO {
function __construct($dsn, $username="", $password="", $driver_options=array()) {
parent::__construct($dsn,$username,$password, $driver_options);
$this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('DBStatement', array($this)));
}
}
class DBStatement extends PDOStatement {
public $dbh;
protected function __construct($dbh) {
$this->dbh = $dbh;
}
}
您可以通过在此页面上搜索“smileaf”找到他的原始答案:https://php.net/manual/en/book.pdo.php