1--TEST-- 2PDO Common: PDO::FETCH_CLASS 3--EXTENSIONS-- 4pdo 5--SKIPIF-- 6<?php 7$dir = getenv('REDIR_TEST_DIR'); 8if (false == $dir) die('skip no driver'); 9require_once $dir . 'pdo_test.inc'; 10PDOTest::skip(); 11?> 12--FILE-- 13<?php 14if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.__DIR__ . '/../../pdo/tests/'); 15require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc'; 16$db = PDOTest::factory(); 17 18$db->exec('CREATE TABLE test(id int NOT NULL PRIMARY KEY, val VARCHAR(10), val2 VARCHAR(10))'); 19$db->exec("INSERT INTO test VALUES(1, 'A', 'AA')"); 20$db->exec("INSERT INTO test VALUES(2, 'B', 'BB')"); 21$db->exec("INSERT INTO test VALUES(3, 'C', 'CC')"); 22 23$stmt = $db->prepare('SELECT id, val, val2 from test'); 24 25class TestBase 26{ 27 public $id; 28 protected $val; 29 private $val2; 30} 31 32class TestDerived extends TestBase 33{ 34 protected $row; 35 36 public function __construct(&$row) 37 { 38 echo __METHOD__ . "($row,{$this->id})\n"; 39 $this->row = $row++; 40 } 41} 42 43$stmt->execute(); 44var_dump($stmt->fetchAll(PDO::FETCH_CLASS)); 45 46$stmt->execute(); 47var_dump($stmt->fetchAll(PDO::FETCH_CLASS, 'TestBase')); 48 49$stmt->execute(); 50var_dump($stmt->fetchAll(PDO::FETCH_CLASS, 'TestDerived', array(0))); 51 52?> 53--EXPECTF-- 54array(3) { 55 [0]=> 56 object(stdClass)#%d (3) { 57 ["id"]=> 58 string(1) "1" 59 ["val"]=> 60 string(1) "A" 61 ["val2"]=> 62 string(2) "AA" 63 } 64 [1]=> 65 object(stdClass)#%d (3) { 66 ["id"]=> 67 string(1) "2" 68 ["val"]=> 69 string(1) "B" 70 ["val2"]=> 71 string(2) "BB" 72 } 73 [2]=> 74 object(stdClass)#%d (3) { 75 ["id"]=> 76 string(1) "3" 77 ["val"]=> 78 string(1) "C" 79 ["val2"]=> 80 string(2) "CC" 81 } 82} 83array(3) { 84 [0]=> 85 object(TestBase)#%d (3) { 86 ["id"]=> 87 string(1) "1" 88 ["val":protected]=> 89 string(1) "A" 90 ["val2":"TestBase":private]=> 91 string(2) "AA" 92 } 93 [1]=> 94 object(TestBase)#%d (3) { 95 ["id"]=> 96 string(1) "2" 97 ["val":protected]=> 98 string(1) "B" 99 ["val2":"TestBase":private]=> 100 string(2) "BB" 101 } 102 [2]=> 103 object(TestBase)#%d (3) { 104 ["id"]=> 105 string(1) "3" 106 ["val":protected]=> 107 string(1) "C" 108 ["val2":"TestBase":private]=> 109 string(2) "CC" 110 } 111} 112TestDerived::__construct(0,1) 113TestDerived::__construct(1,2) 114TestDerived::__construct(2,3) 115array(3) { 116 [0]=> 117 object(TestDerived)#%d (5) { 118 ["id"]=> 119 string(1) "1" 120 ["val":protected]=> 121 string(1) "A" 122 ["val2":"TestBase":private]=> 123 NULL 124 ["row":protected]=> 125 int(0) 126 ["val2"]=> 127 string(2) "AA" 128 } 129 [1]=> 130 object(TestDerived)#%d (5) { 131 ["id"]=> 132 string(1) "2" 133 ["val":protected]=> 134 string(1) "B" 135 ["val2":"TestBase":private]=> 136 NULL 137 ["row":protected]=> 138 int(1) 139 ["val2"]=> 140 string(2) "BB" 141 } 142 [2]=> 143 object(TestDerived)#%d (5) { 144 ["id"]=> 145 string(1) "3" 146 ["val":protected]=> 147 string(1) "C" 148 ["val2":"TestBase":private]=> 149 NULL 150 ["row":protected]=> 151 int(2) 152 ["val2"]=> 153 string(2) "CC" 154 } 155} 156