Annotation of embedaddon/php/ext/pdo/tests/pdo_030.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: PDO Common: extending PDO (4)
                      3: --SKIPIF--
                      4: <?php # vim:ft=php
                      5: if (!extension_loaded('pdo')) die('skip');
                      6: $dir = getenv('REDIR_TEST_DIR');
                      7: if (false == $dir) die('skip no driver');
                      8: require_once $dir . 'pdo_test.inc';
                      9: PDOTest::skip();
                     10: ?>
                     11: --FILE--
                     12: <?php
                     13: if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.dirname(__FILE__) . '/../../pdo/tests/'); 
                     14: require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
                     15: 
                     16: $data = array(
                     17:     array('10', 'Abc', 'zxy'),
                     18:     array('20', 'Def', 'wvu'),
                     19:     array('30', 'Ghi', 'tsr'),
                     20: );
                     21: 
                     22: class PDOStatementX extends PDOStatement
                     23: {
                     24:     public $dbh;
                     25:     
                     26:     protected function __construct($dbh)
                     27:     {
                     28:        $this->dbh = $dbh;
                     29:        $this->setFetchMode(PDO::FETCH_ASSOC);
                     30:        echo __METHOD__ . "()\n";
                     31:     }
                     32:     
                     33:     function __destruct()
                     34:     {
                     35:        echo __METHOD__ . "()\n";
                     36:     }
                     37:     
                     38:     function execute($params = array())
                     39:     {
                     40:        echo __METHOD__ . "()\n";
                     41:                parent::execute();      
                     42:     }
                     43: }
                     44: 
                     45: class PDODatabase extends PDO
                     46: {
                     47:     function __destruct()
                     48:     {
                     49:        echo __METHOD__ . "()\n";
                     50:     }
                     51:     
                     52:     function query($sql)
                     53:     {
                     54:        echo __METHOD__ . "()\n";
                     55:        return parent::query($sql);
                     56:     }
                     57: }
                     58: 
                     59: $db = PDOTest::factory('PDODatabase');
                     60: var_dump(get_class($db));
                     61: 
                     62: $db->exec('CREATE TABLE test(id INT NOT NULL PRIMARY KEY, val VARCHAR(10), val2 VARCHAR(16))');
                     63: 
                     64: $stmt = $db->prepare("INSERT INTO test VALUES(?, ?, ?)");
                     65: var_dump(get_class($stmt));
                     66: foreach ($data as $row) {
                     67:     $stmt->execute($row);
                     68: }
                     69: 
                     70: unset($stmt);
                     71: 
                     72: echo "===QUERY===\n";
                     73: 
                     74: var_dump($db->getAttribute(PDO::ATTR_STATEMENT_CLASS));
                     75: $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('PDOStatementx', array($db)));
                     76: var_dump($db->getAttribute(PDO::ATTR_STATEMENT_CLASS));
                     77: $stmt = $db->query('SELECT * FROM test');
                     78: var_dump(get_class($stmt));
                     79: var_dump(get_class($stmt->dbh));
                     80: 
                     81: echo "===FOREACH===\n";
                     82: 
                     83: foreach($stmt as $obj) {
                     84:        var_dump($obj);
                     85: }
                     86: 
                     87: echo "===DONE===\n";
                     88: exit(0);
                     89: ?>
                     90: --EXPECTF--
                     91: string(11) "PDODatabase"
                     92: string(12) "PDOStatement"
                     93: ===QUERY===
                     94: array(1) {
                     95:   [0]=>
                     96:   string(12) "PDOStatement"
                     97: }
                     98: array(2) {
                     99:   [0]=>
                    100:   string(13) "PDOStatementX"
                    101:   [1]=>
                    102:   array(1) {
                    103:     [0]=>
                    104:     object(PDODatabase)#%d (0) {
                    105:     }
                    106:   }
                    107: }
                    108: PDODatabase::query()
                    109: PDOStatementX::__construct()
                    110: string(13) "PDOStatementX"
                    111: string(11) "PDODatabase"
                    112: ===FOREACH===
                    113: array(3) {
                    114:   ["id"]=>
                    115:   string(2) "10"
                    116:   ["val"]=>
                    117:   string(3) "Abc"
                    118:   ["val2"]=>
                    119:   string(3) "zxy"
                    120: }
                    121: array(3) {
                    122:   ["id"]=>
                    123:   string(2) "20"
                    124:   ["val"]=>
                    125:   string(3) "Def"
                    126:   ["val2"]=>
                    127:   string(3) "wvu"
                    128: }
                    129: array(3) {
                    130:   ["id"]=>
                    131:   string(2) "30"
                    132:   ["val"]=>
                    133:   string(3) "Ghi"
                    134:   ["val2"]=>
                    135:   string(3) "tsr"
                    136: }
                    137: ===DONE===
                    138: PDOStatementX::__destruct()
                    139: PDODatabase::__destruct()

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>