Merge branch 'MDL-81419-main' of https://github.com/andrewnicols/moodle
[moodle.git] / lib / dml / moodle_recordset.php
blob3449b981ad0c9530a1ba0cadb6ae94b111a2247f
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>.
17 /**
18 * Abstract recordset.
20 * @package core_dml
21 * @copyright 2008 Petr Skoda (http://skodak.org)
22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
25 defined('MOODLE_INTERNAL') || die();
27 /**
28 * Abstract class for resultsets returned from database functions.
29 * This is a simple Iterator with needed recorset closing support.
31 * The difference from old recorset is that the records are returned
32 * as objects, not arrays. You should use "foreach ($recordset as $record) {}"
33 * followed by "$recordset->close()".
35 * Do not forget to close all recordsets when they are not needed anymore!
37 abstract class moodle_recordset implements Iterator {
39 /**
40 * Returns current record - fields as object properties, lowercase
41 * @return object
43 //public abstract function current();
45 /**
46 * Returns the key of current row
47 * @return int current row
49 //public abstract function key();
51 /**
52 * Moves forward to next row
53 * @return void
55 //public abstract function next();
57 /**
58 * Rewinds are not supported!
59 * @return void
61 public function rewind(): void {
62 // no seeking, sorry - let's ignore it ;-)
63 return;
66 /**
67 * Did we reach the end?
68 * @return boolean
70 //public abstract function valid();
72 /**
73 * Free resources and connections, recordset can not be used anymore.
74 * @return void
76 abstract public function close();