]> granicus.if.org Git - php/commitdiff
- Allow to check for default statment class
authorMarcus Boerger <helly@php.net>
Sun, 2 Oct 2005 18:45:59 +0000 (18:45 +0000)
committerMarcus Boerger <helly@php.net>
Sun, 2 Oct 2005 18:45:59 +0000 (18:45 +0000)
ext/pdo/pdo_dbh.c
ext/pdo/tests/pdo_030.phpt

index 0184aa771c28bba80790aac8c2cfe667c4ed04bc..a066241aa01c916b44c39aef7dd893ef69dc65a6 100755 (executable)
@@ -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) {
index 3e54750eae33b4c081643200f39bc97c0b626dd3..0ebbdf373066b3889f6429444ec077da544fd78c 100755 (executable)
@@ -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"