Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2
3namespace Wikimedia\Rdbms;
4
5use Countable;
6use OutOfBoundsException;
7use SeekableIterator;
8use stdClass;
9
10/**
11 * Result wrapper for grabbing data queried from an IDatabase object
12 *
13 * Note that using the Iterator methods in combination with the non-Iterator
14 * DB result iteration functions may cause rows to be skipped or repeated.
15 *
16 * By default, this will use the iteration methods of the IDatabase handle if provided.
17 * Subclasses can override methods to make it solely work on the result resource instead.
18 * If no database is provided, and the subclass does not override the DB iteration methods,
19 * then a RuntimeException will be thrown when iteration is attempted.
20 *
21 * The result resource field should not be accessed from non-Database related classes.
22 * It is database class specific and is stored here to associate iterators with queries.
23 *
24 * @ingroup Database
25 */
26interface IResultWrapper extends Countable, SeekableIterator {
27    /**
28     * Get the number of rows in a result object
29     *
30     * @return int
31     */
32    public function numRows();
33
34    /**
35     * Get the number of rows in a result object
36     *
37     * @return int
38     */
39    public function count(): int;
40
41    /**
42     * Fetch the next row from the given result object, in object form. Fields can be retrieved with
43     * $row->fieldname, with fields acting like member variables. If no more rows are available,
44     * false is returned.
45     *
46     * @return stdClass|false
47     * @throws DBUnexpectedError Thrown if the database returns an error
48     */
49    public function fetchObject();
50
51    /**
52     * Fetch the next row from the given result object, in associative array form. Fields are
53     * retrieved with $row['fieldname']. If no more rows are available, false is returned.
54     *
55     * @return array|false
56     * @throws DBUnexpectedError Thrown if the database returns an error
57     */
58    public function fetchRow();
59
60    /**
61     * Change the position of the cursor in a result object.
62     * See mysql_data_seek()
63     *
64     * @throws OutOfBoundsException
65     * @param int $pos
66     */
67    public function seek( $pos ): void;
68
69    /**
70     * Free a result object
71     *
72     * This either saves memory in PHP (buffered queries) or on the server (unbuffered queries).
73     * In general, queries are not large enough in result sets for this to be worth calling.
74     */
75    public function free();
76
77    /**
78     * @return stdClass|array|false
79     */
80    #[\ReturnTypeWillChange]
81    public function current();
82
83    /**
84     * @return int
85     */
86    public function key(): int;
87
88    /**
89     * @return void
90     */
91    public function next(): void;
92
93    /**
94     * Get the names of the fields in the result
95     *
96     * @since 1.37
97     * @return string[]
98     */
99    public function getFieldNames();
100}