Skip to content

Commit 8a81d00

Browse files
committed
ext/pdo: Add a test creating instances of Directory
This should not be possible, other opaque classes cannot be instantiated in practice as they do not have properties and prevent dynamic properties
1 parent 75d7684 commit 8a81d00

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
--TEST--
2+
PDO Common: Attempting to initialize an opaque object via PDO::FETCH_CLASS
3+
--EXTENSIONS--
4+
pdo
5+
--SKIPIF--
6+
<?php
7+
$dir = getenv('REDIR_TEST_DIR');
8+
if (false == $dir) die('skip no driver');
9+
require_once $dir . 'pdo_test.inc';
10+
PDOTest::skip();
11+
?>
12+
--FILE--
13+
<?php
14+
if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.__DIR__ . '/../../pdo/tests/');
15+
require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
16+
$db = PDOTest::factory();
17+
18+
$db->exec('CREATE TABLE pdo_fetch_class_opaque_object(id int NOT NULL PRIMARY KEY, path VARCHAR(10))');
19+
$db->exec("INSERT INTO pdo_fetch_class_opaque_object VALUES(1, 'AA')");
20+
$db->exec("INSERT INTO pdo_fetch_class_opaque_object VALUES(2, 'BB')");
21+
$db->exec("INSERT INTO pdo_fetch_class_opaque_object VALUES(3, 'CC')");
22+
23+
$stmt = $db->prepare('SELECT path FROM pdo_fetch_class_opaque_object');
24+
$stmt->execute();
25+
26+
var_dump($stmt->fetchAll(PDO::FETCH_CLASS, 'Directory', []));
27+
?>
28+
--CLEAN--
29+
<?php
30+
require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
31+
$db = PDOTest::factory();
32+
PDOTest::dropTableIfExists($db, "pdo_fetch_class_opaque_object");
33+
?>
34+
--EXPECTF--
35+
array(3) {
36+
[0]=>
37+
object(Directory)#%s (1) {
38+
["path"]=>
39+
string(2) "AA"
40+
["handle"]=>
41+
uninitialized(mixed)
42+
}
43+
[1]=>
44+
object(Directory)#%s (1) {
45+
["path"]=>
46+
string(2) "BB"
47+
["handle"]=>
48+
uninitialized(mixed)
49+
}
50+
[2]=>
51+
object(Directory)#%s (1) {
52+
["path"]=>
53+
string(2) "CC"
54+
["handle"]=>
55+
uninitialized(mixed)
56+
}
57+
}

0 commit comments

Comments
 (0)