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>