xref: /PHP-8.1/ext/pdo/tests/pdo_005.phpt (revision 74859783)
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