Annotation of embedaddon/php/ext/mysqli/tests/mysqli_fetch_object.phpt, revision 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>