Sfoglia il codice sorgente

ZF-7706
- Add a method in Zend_Db_Statement to return the driver statement resource/object

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@17855 44c647ce-9c0f-0410-b52a-842ac1e357ba

ralph 16 anni fa
parent
commit
58b58e75ad

+ 16 - 1
library/Zend/Db/Statement.php

@@ -43,6 +43,11 @@ abstract class Zend_Db_Statement implements Zend_Db_Statement_Interface
 {
 
     /**
+     * @var resource|object The driver level statement object/resource
+     */
+    protected $_stmt = null;
+    
+    /**
      * @var Zend_Db_Adapter_Abstract
      */
     protected $_adapter = null;
@@ -111,7 +116,7 @@ abstract class Zend_Db_Statement implements Zend_Db_Statement_Interface
 
         $this->_queryId = $this->_adapter->getProfiler()->queryStart($sql);
     }
-
+    
     /**
      * @param string $sql
      * @return void
@@ -456,4 +461,14 @@ abstract class Zend_Db_Statement implements Zend_Db_Statement_Interface
     {
         return $this->_adapter;
     }
+    
+    /**
+     * Gets the resource or object setup by the 
+     * _parse
+     * @return unknown_type
+     */
+    public function getDriverStatement()
+    {
+        return $this->_stmt;
+    }
 }

+ 0 - 4
library/Zend/Db/Statement/Db2.php

@@ -35,10 +35,6 @@ require_once 'Zend/Db/Statement.php';
  */
 class Zend_Db_Statement_Db2 extends Zend_Db_Statement
 {
-    /**
-     * Statement resource handle.
-     */
-    protected $_stmt = null;
 
     /**
      * Column names.

+ 0 - 7
library/Zend/Db/Statement/Mysqli.php

@@ -40,13 +40,6 @@ class Zend_Db_Statement_Mysqli extends Zend_Db_Statement
 {
 
     /**
-     * The mysqli_stmt object.
-     *
-     * @var mysqli_stmt
-     */
-    protected $_stmt;
-
-    /**
      * Column names.
      *
      * @var array

+ 0 - 5
library/Zend/Db/Statement/Oracle.php

@@ -38,11 +38,6 @@ class Zend_Db_Statement_Oracle extends Zend_Db_Statement
 {
 
     /**
-     * The connection_stmt object.
-     */
-    protected $_stmt;
-
-    /**
      * Column names.
      */
     protected $_keys;

+ 0 - 7
library/Zend/Db/Statement/Pdo.php

@@ -41,13 +41,6 @@ class Zend_Db_Statement_Pdo extends Zend_Db_Statement implements IteratorAggrega
 {
 
     /**
-     * The statement object.
-     *
-     * @var PDOStatement
-     */
-    protected $_stmt;
-
-    /**
      * @var int
      */
     protected $_fetchMode = PDO::FETCH_ASSOC;

+ 0 - 4
library/Zend/Db/Statement/Sqlsrv.php

@@ -36,10 +36,6 @@ require_once 'Zend/Db/Statement.php';
  */
 class Zend_Db_Statement_Sqlsrv extends Zend_Db_Statement
 {
-    /**
-     * The connection_stmt object.
-     */
-    protected $_stmt;
 
     /**
      * The connection_stmt object original string.

+ 9 - 0
tests/Zend/Db/Statement/MysqliTest.php

@@ -123,6 +123,15 @@ class Zend_Db_Statement_MysqliTest extends Zend_Db_Statement_TestCommon
         }
     }
 
+    /**
+     * @group ZF-7706
+     */
+    public function testStatementCanReturnDriverStatement()
+    {
+        $statement = parent::testStatementCanReturnDriverStatement();
+        $this->assertType('mysqli_stmt', $statement->getDriverStatement());
+    }
+    
     public function getDriver()
     {
         return 'Mysqli';

+ 9 - 0
tests/Zend/Db/Statement/Pdo/MysqlTest.php

@@ -69,6 +69,15 @@ class Zend_Db_Statement_Pdo_MysqlTest extends Zend_Db_Statement_Pdo_TestCommon
         $this->assertEquals(4, count($results));
     }
 
+    /**
+     * @group ZF-7706
+     */
+    public function testStatementCanReturnDriverStatement()
+    {
+        $statement = parent::testStatementCanReturnDriverStatement();
+        $this->assertType('PDOStatement', $statement->getDriverStatement());
+    }
+    
     public function getDriver()
     {
         return 'Pdo_Mysql';

+ 9 - 0
tests/Zend/Db/Statement/Pdo/SqliteTest.php

@@ -50,6 +50,15 @@ class Zend_Db_Statement_Pdo_SqliteTest extends Zend_Db_Statement_Pdo_TestCommon
         'native_type', 'sqlite:decl_type', 'flags', 'name', 'len', 'precision', 'pdo_type'
     );
 
+    /**
+     * @group ZF-7706
+     */
+    public function testStatementCanReturnDriverStatement()
+    {
+        $statement = parent::testStatementCanReturnDriverStatement();
+        $this->assertType('PDOStatement', $statement->getDriverStatement());
+    }
+    
     public function getDriver()
     {
         return 'Pdo_Sqlite';

+ 10 - 0
tests/Zend/Db/Statement/TestCommon.php

@@ -858,4 +858,14 @@ abstract class Zend_Db_Statement_TestCommon extends Zend_Db_TestSetup
         $this->assertEquals($valueArray, $stmt->getAttribute(1235), "Expected array #2");
         $this->assertEquals($value, $stmt->getAttribute(1234), "Expected '$value' #2");
     }
+    
+    /**
+     * @group ZF-7706
+     */
+    public function testStatementCanReturnDriverStatement()
+    {
+        $statement = $this->_db->query('SELECT * FROM zfproducts');
+        $this->assertNotNull($statement->getDriverStatement());
+        return $statement;
+    }
 }