我正在写一个PDO扩展。我希望prepare方法PDO不调用它的父方法,而是构造它自己的PDOStatement。
class Foo extends \PDO {
public function prepare ($statement, $driver_options = []) {
// return parent::prepare($statement, $driver_options);
// What does parent::prepare do?
}
}看起来,PDO prepare方法只是构造PDOStatement实例,但是PDOStatement构造函数并没有我期望的所有参数(语句本身,等等)。
如何在用户土地上编写PDO prepare方法?
注意,我知道PDO::ATTR_STATEMENT_CLASS的存在,并且可以使用它来命名要构造的PDOStatement类。我感兴趣的是,这个PDOStatement是否可以在用户土地上构建.
发布于 2014-05-21 20:06:44
不能直接实例化PDOStatement。这是硬编码不允许的。
我在PHP5.5源代码中找到了这一点,在ext/pdo/pdo_stmt.c中:
static PHP_FUNCTION(dbstmt_constructor) /* {{{ */
{
php_error_docref(NULL TSRMLS_CC, E_ERROR, "You should not create a PDOStatement manually");
}
/* }}} */您应该通过调用PDO::PDOStatement ()或PDO::prepare()来创建一个。
从您的问题中还不清楚为什么需要直接实例化PDOStatement。我觉得你需要重新考虑你的目标。
https://stackoverflow.com/questions/23792451
复制相似问题