gpt4 book ai didi

php - 如何构造 PDOStatement 类?

转载 作者:搜寻专家 更新时间:2023-10-31 20:40:15 26 4
gpt4 key购买 nike

我正在编写一个 PDO 扩展。我希望 PDOprepare 方法不调用其父级,而是构造它自己的 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 是否可以在用户空间中构建。

最佳答案

您不能直接实例化 PDOStatement。它被硬编码为不允许它。

我在 PHP 5.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::query() 或 PDO::prepare() 创建一个 PDOStatement。

从您的问题中不清楚为什么您需要直接实例化 PDOStatement。我认为您需要重新考虑您的目标。

关于php - 如何构造 PDOStatement 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23792451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com