Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何构造PDO语句类?_Php_Pdo - Fatal编程技术网

Php 如何构造PDO语句类?

Php 如何构造PDO语句类?,php,pdo,Php,Pdo,我正在写一个PDO扩展。我希望preparemethodofPDO不要调用它的父对象,而是构建它自己的PDO语句 class Foo extends \PDO { public function prepare ($statement, $driver_options = []) { // return parent::prepare($statement, $driver_options); // What does parent::prepare do

我正在写一个PDO扩展。我希望
prepare
methodof
PDO
不要调用它的父对象,而是构建它自己的
PDO语句

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_类
,它可以用来命名要构造的
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()来创建PDO语句


您的问题不清楚为什么需要直接实例化PDO语句。我认为你需要重新思考你的目标。

嗨,Gajus,什么是用户土地。@meda,用户土地是“用PHP代码而不是C代码编写”的非正式术语