扩展 php pdo 以支持 impala,但 setAttribute() 函数失败

Expand php pdo to support impala, but the setAttribute() function failed

扩展 php pdo 以支持 impala,但 setAttribute() 函数失败。 我的代码是:

class ImpalaPDO extends PDO {

    public function __construct($dsn, $username, $passwd, $options)
    {
        parent::__construct($dsn, $username, $passwd, $options);
        $impala = new ImpalaPDOStatement();
        $impala->test();
        $this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('ImpalaPDOStatement', array($this)));
    }
}

class ImpalaPDOStatement extends PDOStatement {

    public function test() {
        print "aaa";
    }
}

错误信息是: SQLSTATE[HY000]: 一般错误: PDO::ATTR_STATEMENT_CLASS 需要格式数组(classname, array(ctor_args)); class名称必须是指定现有 class 的字符串。 我可以确认的是 ImpalaPDOStatement 存在,因为 $impala->test() 成功打印了一个字符串。所以我不知道错误信息是什么意思。

您必须覆盖 PDOStatement:

的受保护构造函数
class ImpalaPDOStatement extends PDOStatement {
    public $dbh;

    // Constructor must be overrided
    protected function __construct($dbh) {
        $this->dbh = $dbh;
    }

    public function test() {
        print "aaa";
    }
}