扩展 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";
}
}
扩展 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";
}
}