Annotation of embedaddon/php/ext/pdo/tests/pdo_011.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: PDO Common: PDO::FETCH_FUNC and statement overloading
        !             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: $db = PDOTest::factory();
        !            16: 
        !            17: $db->exec('CREATE TABLE test(id int NOT NULL PRIMARY KEY, val VARCHAR(10), grp VARCHAR(10))');
        !            18: $db->exec('INSERT INTO test VALUES(1, \'A\', \'Group1\')'); 
        !            19: $db->exec('INSERT INTO test VALUES(2, \'B\', \'Group1\')'); 
        !            20: $db->exec('INSERT INTO test VALUES(3, \'C\', \'Group2\')'); 
        !            21: $db->exec('INSERT INTO test VALUES(4, \'D\', \'Group2\')'); 
        !            22: 
        !            23: class DerivedStatement extends PDOStatement
        !            24: {
        !            25:        private function __construct($name, $db)
        !            26:        {
        !            27:                $this->name = $name;
        !            28:                echo __METHOD__ . "($name)\n";
        !            29:        }
        !            30: 
        !            31:        function reTrieve($id, $val) {
        !            32:                echo __METHOD__ . "($id,$val)\n";
        !            33:                return array($id=>$val);
        !            34:        }
        !            35: }
        !            36: 
        !            37: $select1 = $db->prepare('SELECT grp, id FROM test');
        !            38: $select2 = $db->prepare('SELECT id, val FROM test');
        !            39: $derived = $db->prepare('SELECT id, val FROM test', array(PDO::ATTR_STATEMENT_CLASS=>array('DerivedStatement', array('Overloaded', $db))));
        !            40: 
        !            41: class Test1
        !            42: {
        !            43:        public function __construct($id, $val)
        !            44:        {
        !            45:                echo __METHOD__ . "($id,$val)\n";
        !            46:                $this->id = $id;
        !            47:                $this->val = $val;
        !            48:        }
        !            49: 
        !            50:        static public function factory($id, $val)
        !            51:        {
        !            52:                echo __METHOD__ . "($id,$val)\n";
        !            53:                return new self($id, $val);
        !            54:        }
        !            55: }
        !            56: 
        !            57: function test($id,$val='N/A')
        !            58: {
        !            59:        echo __METHOD__ . "($id,$val)\n";
        !            60:        return array($id=>$val);
        !            61: }
        !            62: 
        !            63: $f = new Test1(0,0);
        !            64: 
        !            65: $select1->execute();
        !            66: var_dump($select1->fetchAll(PDO::FETCH_FUNC|PDO::FETCH_GROUP, 'test'));
        !            67: 
        !            68: $select2->execute();
        !            69: var_dump($select2->fetchAll(PDO::FETCH_FUNC, 'test'));
        !            70: 
        !            71: $select2->execute();
        !            72: var_dump($select2->fetchAll(PDO::FETCH_FUNC, array('Test1','factory')));
        !            73: 
        !            74: $select2->execute();
        !            75: var_dump($select2->fetchAll(PDO::FETCH_FUNC, array($f, 'factory')));
        !            76: 
        !            77: var_dump(get_class($derived));
        !            78: $derived->execute();
        !            79: var_dump($derived->fetchAll(PDO::FETCH_FUNC, array($derived, 'retrieve')));
        !            80: $derived->execute();
        !            81: var_dump($derived->fetchAll(PDO::FETCH_FUNC, array($derived, 'reTrieve')));
        !            82: $derived->execute();
        !            83: var_dump($derived->fetchAll(PDO::FETCH_FUNC, array($derived, 'RETRIEVE')));
        !            84: 
        !            85: ?>
        !            86: --EXPECTF--
        !            87: DerivedStatement::__construct(Overloaded)
        !            88: Test1::__construct(0,0)
        !            89: test(1,N/A)
        !            90: test(2,N/A)
        !            91: test(3,N/A)
        !            92: test(4,N/A)
        !            93: array(2) {
        !            94:   ["Group1"]=>
        !            95:   array(2) {
        !            96:     [0]=>
        !            97:     array(1) {
        !            98:       [1]=>
        !            99:       string(3) "N/A"
        !           100:     }
        !           101:     [1]=>
        !           102:     array(1) {
        !           103:       [2]=>
        !           104:       string(3) "N/A"
        !           105:     }
        !           106:   }
        !           107:   ["Group2"]=>
        !           108:   array(2) {
        !           109:     [0]=>
        !           110:     array(1) {
        !           111:       [3]=>
        !           112:       string(3) "N/A"
        !           113:     }
        !           114:     [1]=>
        !           115:     array(1) {
        !           116:       [4]=>
        !           117:       string(3) "N/A"
        !           118:     }
        !           119:   }
        !           120: }
        !           121: test(1,A)
        !           122: test(2,B)
        !           123: test(3,C)
        !           124: test(4,D)
        !           125: array(4) {
        !           126:   [0]=>
        !           127:   array(1) {
        !           128:     [1]=>
        !           129:     string(1) "A"
        !           130:   }
        !           131:   [1]=>
        !           132:   array(1) {
        !           133:     [2]=>
        !           134:     string(1) "B"
        !           135:   }
        !           136:   [2]=>
        !           137:   array(1) {
        !           138:     [3]=>
        !           139:     string(1) "C"
        !           140:   }
        !           141:   [3]=>
        !           142:   array(1) {
        !           143:     [4]=>
        !           144:     string(1) "D"
        !           145:   }
        !           146: }
        !           147: Test1::factory(1,A)
        !           148: Test1::__construct(1,A)
        !           149: Test1::factory(2,B)
        !           150: Test1::__construct(2,B)
        !           151: Test1::factory(3,C)
        !           152: Test1::__construct(3,C)
        !           153: Test1::factory(4,D)
        !           154: Test1::__construct(4,D)
        !           155: array(4) {
        !           156:   [0]=>
        !           157:   object(Test1)#%d (2) {
        !           158:     ["id"]=>
        !           159:     string(1) "1"
        !           160:     ["val"]=>
        !           161:     string(1) "A"
        !           162:   }
        !           163:   [1]=>
        !           164:   object(Test1)#%d (2) {
        !           165:     ["id"]=>
        !           166:     string(1) "2"
        !           167:     ["val"]=>
        !           168:     string(1) "B"
        !           169:   }
        !           170:   [2]=>
        !           171:   object(Test1)#%d (2) {
        !           172:     ["id"]=>
        !           173:     string(1) "3"
        !           174:     ["val"]=>
        !           175:     string(1) "C"
        !           176:   }
        !           177:   [3]=>
        !           178:   object(Test1)#%d (2) {
        !           179:     ["id"]=>
        !           180:     string(1) "4"
        !           181:     ["val"]=>
        !           182:     string(1) "D"
        !           183:   }
        !           184: }
        !           185: Test1::factory(1,A)
        !           186: Test1::__construct(1,A)
        !           187: Test1::factory(2,B)
        !           188: Test1::__construct(2,B)
        !           189: Test1::factory(3,C)
        !           190: Test1::__construct(3,C)
        !           191: Test1::factory(4,D)
        !           192: Test1::__construct(4,D)
        !           193: array(4) {
        !           194:   [0]=>
        !           195:   object(Test1)#%d (2) {
        !           196:     ["id"]=>
        !           197:     string(1) "1"
        !           198:     ["val"]=>
        !           199:     string(1) "A"
        !           200:   }
        !           201:   [1]=>
        !           202:   object(Test1)#%d (2) {
        !           203:     ["id"]=>
        !           204:     string(1) "2"
        !           205:     ["val"]=>
        !           206:     string(1) "B"
        !           207:   }
        !           208:   [2]=>
        !           209:   object(Test1)#%d (2) {
        !           210:     ["id"]=>
        !           211:     string(1) "3"
        !           212:     ["val"]=>
        !           213:     string(1) "C"
        !           214:   }
        !           215:   [3]=>
        !           216:   object(Test1)#%d (2) {
        !           217:     ["id"]=>
        !           218:     string(1) "4"
        !           219:     ["val"]=>
        !           220:     string(1) "D"
        !           221:   }
        !           222: }
        !           223: string(16) "DerivedStatement"
        !           224: DerivedStatement::reTrieve(1,A)
        !           225: DerivedStatement::reTrieve(2,B)
        !           226: DerivedStatement::reTrieve(3,C)
        !           227: DerivedStatement::reTrieve(4,D)
        !           228: array(4) {
        !           229:   [0]=>
        !           230:   array(1) {
        !           231:     [1]=>
        !           232:     string(1) "A"
        !           233:   }
        !           234:   [1]=>
        !           235:   array(1) {
        !           236:     [2]=>
        !           237:     string(1) "B"
        !           238:   }
        !           239:   [2]=>
        !           240:   array(1) {
        !           241:     [3]=>
        !           242:     string(1) "C"
        !           243:   }
        !           244:   [3]=>
        !           245:   array(1) {
        !           246:     [4]=>
        !           247:     string(1) "D"
        !           248:   }
        !           249: }
        !           250: DerivedStatement::reTrieve(1,A)
        !           251: DerivedStatement::reTrieve(2,B)
        !           252: DerivedStatement::reTrieve(3,C)
        !           253: DerivedStatement::reTrieve(4,D)
        !           254: array(4) {
        !           255:   [0]=>
        !           256:   array(1) {
        !           257:     [1]=>
        !           258:     string(1) "A"
        !           259:   }
        !           260:   [1]=>
        !           261:   array(1) {
        !           262:     [2]=>
        !           263:     string(1) "B"
        !           264:   }
        !           265:   [2]=>
        !           266:   array(1) {
        !           267:     [3]=>
        !           268:     string(1) "C"
        !           269:   }
        !           270:   [3]=>
        !           271:   array(1) {
        !           272:     [4]=>
        !           273:     string(1) "D"
        !           274:   }
        !           275: }
        !           276: DerivedStatement::reTrieve(1,A)
        !           277: DerivedStatement::reTrieve(2,B)
        !           278: DerivedStatement::reTrieve(3,C)
        !           279: DerivedStatement::reTrieve(4,D)
        !           280: array(4) {
        !           281:   [0]=>
        !           282:   array(1) {
        !           283:     [1]=>
        !           284:     string(1) "A"
        !           285:   }
        !           286:   [1]=>
        !           287:   array(1) {
        !           288:     [2]=>
        !           289:     string(1) "B"
        !           290:   }
        !           291:   [2]=>
        !           292:   array(1) {
        !           293:     [3]=>
        !           294:     string(1) "C"
        !           295:   }
        !           296:   [3]=>
        !           297:   array(1) {
        !           298:     [4]=>
        !           299:     string(1) "D"
        !           300:   }
        !           301: }

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