Annotation of embedaddon/php/ext/mysqli/tests/mysqli_fetch_object.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: mysqli_fetch_object()
3: --SKIPIF--
4: <?php
5: require_once('skipif.inc');
6: require_once('skipifemb.inc');
7: require_once('skipifconnectfailure.inc');
8: ?>
9: --FILE--
10: <?php
11: include_once("connect.inc");
12:
13: $tmp = NULL;
14: $link = NULL;
15:
16: if (!is_null($tmp = @mysqli_fetch_object()))
17: printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
18:
19: if (!is_null($tmp = @mysqli_fetch_object($link)))
20: printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
21:
22: require('table.inc');
23: if (!$res = mysqli_query($link, "SELECT id AS ID, label FROM test AS TEST ORDER BY id LIMIT 5")) {
24: printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
25: }
26:
27: $obj = mysqli_fetch_object($res);
28: if (($obj->ID !== "1") || ($obj->label !== "a") || (get_class($obj) != 'stdClass')) {
29: printf("[004] Object seems wrong. [%d] %s\n", mysqli_errno($link), mysqli_error($link));
30: var_dump($obj);
31: }
32:
33: class mysqli_fetch_object_test {
34:
35: public $a = null;
36: public $b = null;
37:
38: public function toString() {
39: var_dump($this);
40: }
41: }
42:
43: $obj = mysqli_fetch_object($res, 'mysqli_fetch_object_test');
44: if (($obj->ID !== "2") || ($obj->label !== "b") || ($obj->a !== NULL) || ($obj->b !== NULL) || (get_class($obj) != 'mysqli_fetch_object_test')) {
45: printf("[005] Object seems wrong. [%d] %s\n", mysqli_errno($link), mysqli_error($link));
46: var_dump($obj);
47: }
48:
49:
50:
51: class mysqli_fetch_object_construct extends mysqli_fetch_object_test {
52:
53: public function __construct($a, $b) {
54: $this->a = $a;
55: $this->b = $b;
56: }
57:
58: }
59:
60: $obj = mysqli_fetch_object($res, 'mysqli_fetch_object_construct', null);
61:
62: if (($obj->ID !== "3") || ($obj->label !== "c") || ($obj->a !== NULL) || ($obj->b !== NULL) || (get_class($obj) != 'mysqli_fetch_object_construct')) {
63: printf("[006] Object seems wrong. [%d] %s\n", mysqli_errno($link), mysqli_error($link));
64: var_dump($obj);
65: }
66:
67: $obj = mysqli_fetch_object($res, 'mysqli_fetch_object_construct', array('a'));
68: if (($obj->ID !== "4") || ($obj->label !== "d") || ($obj->a !== 'a') || ($obj->b !== NULL) || (get_class($obj) != 'mysqli_fetch_object_construct')) {
69: printf("[007] Object seems wrong. [%d] %s\n", mysqli_errno($link), mysqli_error($link));
70: var_dump($obj);
71: }
72:
73: $obj = mysqli_fetch_object($res, 'mysqli_fetch_object_construct', array('a', 'b'));
74: if (($obj->ID !== "5") || ($obj->label !== "e") || ($obj->a !== 'a') || ($obj->b !== 'b') || (get_class($obj) != 'mysqli_fetch_object_construct')) {
75: printf("[008] Object seems wrong. [%d] %s\n", mysqli_errno($link), mysqli_error($link));
76: var_dump($obj);
77: }
78:
79: var_dump(mysqli_fetch_object($res, 'mysqli_fetch_object_construct', array('a', 'b', 'c')));
80: var_dump(mysqli_fetch_object($res));
81:
82: mysqli_free_result($res);
83:
84: if (!$res = mysqli_query($link, "SELECT id AS ID, label FROM test AS TEST")) {
85: printf("[009] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
86: }
87:
88: mysqli_free_result($res);
89: var_dump(mysqli_fetch_object($res));
90:
91: if (!$res = mysqli_query($link, "SELECT id AS ID, label FROM test AS TEST ORDER BY id LIMIT 5"))
92: printf("[010] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
93:
94: /*
95: TODO
96: I'm using the procedural interface, this should not throw an exception.
97: Also, I did not ask to get exceptions using the mysqli_options()
98: */
99: try {
100: if (false !== ($obj = mysqli_fetch_object($res, 'mysqli_fetch_object_construct', 'a')))
101: printf("[011] Should have failed\n");
102: } catch (Exception $e) {
103: printf("%s\n", $e->getMessage());
104: }
105:
106: mysqli_free_result($res);
107:
108: if (!$res = mysqli_query($link, "SELECT id AS ID, label FROM test AS TEST ORDER BY id LIMIT 5"))
109: printf("[012] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
110:
111: class mysqli_fetch_object_private_constructor extends mysqli_fetch_object_test {
112:
113: private function __construct($a, $b) {
114: $this->a = $a;
115: $this->b = $b;
116: }
117: }
118: /*
119: TODO
120: I think we should bail out here. The following line will give a Fatal error: Call to private ... from invalid context
121: var_dump($obj = new mysqli_fetch_object_private_constructor(1, 2));
122: This does not fail.
123: */
124: $obj = mysqli_fetch_object($res, 'mysqli_fetch_object_private_constructor', array('a', 'b'));
125: mysqli_free_result($res);
126:
127: // Fatal error, script execution will end
128: var_dump(mysqli_fetch_object($res, 'this_class_does_not_exist'));
129:
130:
131: mysqli_close($link);
132: print "done!";
133: ?>
134: --CLEAN--
135: <?php
136: require_once("clean_table.inc");
137: ?>
138: --EXPECTF--
139: Warning: Missing argument 1 for mysqli_fetch_object_construct::__construct() in %s on line %d
140:
141: Warning: Missing argument 2 for mysqli_fetch_object_construct::__construct() in %s on line %d
142:
143: Notice: Undefined variable: a in %s on line %d
144:
145: Notice: Undefined variable: b in %s on line %d
146:
147: Warning: Missing argument 2 for mysqli_fetch_object_construct::__construct() in %s on line %d
148:
149: Notice: Undefined variable: b in %s on line %d
150: NULL
151: NULL
152:
153: Warning: mysqli_fetch_object(): Couldn't fetch mysqli_result in %s on line %d
154: NULL
155: Parameter ctor_params must be an array
156:
157: Fatal error: Class 'this_class_does_not_exist' not found in %s on line %d
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>