File: IResultWrapper.php

package info (click to toggle)
mediawiki 1%3A1.43.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 417,464 kB
  • sloc: php: 1,062,949; javascript: 664,290; sql: 9,714; python: 5,458; xml: 3,489; sh: 1,131; makefile: 64
file content (100 lines) | stat: -rw-r--r-- 2,628 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php

namespace Wikimedia\Rdbms;

use Countable;
use OutOfBoundsException;
use SeekableIterator;
use stdClass;

/**
 * Result wrapper for grabbing data queried from an IDatabase object
 *
 * Note that using the Iterator methods in combination with the non-Iterator
 * DB result iteration functions may cause rows to be skipped or repeated.
 *
 * By default, this will use the iteration methods of the IDatabase handle if provided.
 * Subclasses can override methods to make it solely work on the result resource instead.
 * If no database is provided, and the subclass does not override the DB iteration methods,
 * then a RuntimeException will be thrown when iteration is attempted.
 *
 * The result resource field should not be accessed from non-Database related classes.
 * It is database class specific and is stored here to associate iterators with queries.
 *
 * @ingroup Database
 */
interface IResultWrapper extends Countable, SeekableIterator {
	/**
	 * Get the number of rows in a result object
	 *
	 * @return int
	 */
	public function numRows();

	/**
	 * Get the number of rows in a result object
	 *
	 * @return int
	 */
	public function count(): int;

	/**
	 * Fetch the next row from the given result object, in object form. Fields can be retrieved with
	 * $row->fieldname, with fields acting like member variables. If no more rows are available,
	 * false is returned.
	 *
	 * @return stdClass|false
	 * @throws DBUnexpectedError Thrown if the database returns an error
	 */
	public function fetchObject();

	/**
	 * Fetch the next row from the given result object, in associative array form. Fields are
	 * retrieved with $row['fieldname']. If no more rows are available, false is returned.
	 *
	 * @return array|false
	 * @throws DBUnexpectedError Thrown if the database returns an error
	 */
	public function fetchRow();

	/**
	 * Change the position of the cursor in a result object.
	 * See mysql_data_seek()
	 *
	 * @throws OutOfBoundsException
	 * @param int $pos
	 */
	public function seek( $pos ): void;

	/**
	 * Free a result object
	 *
	 * This either saves memory in PHP (buffered queries) or on the server (unbuffered queries).
	 * In general, queries are not large enough in result sets for this to be worth calling.
	 */
	public function free();

	/**
	 * @return stdClass|array|false
	 */
	#[\ReturnTypeWillChange]
	public function current();

	/**
	 * @return int
	 */
	public function key(): int;

	/**
	 * @return void
	 */
	public function next(): void;

	/**
	 * Get the names of the fields in the result
	 *
	 * @since 1.37
	 * @return string[]
	 */
	public function getFieldNames();
}