From: Marcus Boerger Date: Sun, 2 Oct 2005 18:45:59 +0000 (+0000) Subject: - Allow to check for default statment class X-Git-Tag: RELEASE_0_9_0~54 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a39841e57d04062269e98a0b69074f6515936267;p=php - Allow to check for default statment class --- diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c index 0184aa771c..a066241aa0 100755 --- a/ext/pdo/pdo_dbh.c +++ b/ext/pdo/pdo_dbh.c @@ -824,6 +824,15 @@ static PHP_METHOD(PDO, getAttribute) case PDO_ATTR_DRIVER_NAME: RETURN_STRINGL(dbh->driver->driver_name, dbh->driver->driver_name_len, 1); + + case PDO_ATTR_STATEMENT_CLASS: + array_init(return_value); + add_next_index_string(return_value, dbh->def_stmt_ce->name, 1); + if (dbh->def_stmt_ctor_args) { + dbh->def_stmt_ctor_args->refcount++; + add_next_index_zval(return_value, dbh->def_stmt_ctor_args); + } + return; } if (!dbh->methods->get_attribute) { diff --git a/ext/pdo/tests/pdo_030.phpt b/ext/pdo/tests/pdo_030.phpt index 3e54750eae..0ebbdf3730 100755 --- a/ext/pdo/tests/pdo_030.phpt +++ b/ext/pdo/tests/pdo_030.phpt @@ -71,7 +71,9 @@ unset($stmt); echo "===QUERY===\n"; +var_dump($db->getAttribute(PDO::ATTR_STATEMENT_CLASS)); $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('PDOStatementx', array($db))); +var_dump($db->getAttribute(PDO::ATTR_STATEMENT_CLASS)); $stmt = $db->query('SELECT * FROM test'); var_dump(get_class($stmt)); var_dump(get_class($stmt->dbh)); @@ -85,10 +87,24 @@ foreach($stmt as $obj) { echo "===DONE===\n"; exit(0); ?> ---EXPECT-- +--EXPECTF-- string(11) "PDODatabase" string(12) "PDOStatement" ===QUERY=== +array(1) { + [0]=> + string(12) "PDOStatement" +} +array(2) { + [0]=> + string(13) "PDOStatementX" + [1]=> + array(1) { + [0]=> + object(PDODatabase)#%d (0) { + } + } +} PDODatabase::query() PDOStatementX::__construct() string(13) "PDOStatementX"