Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
// This file is part of Moodle - http://moodle.org/
4
//
5
// Moodle is free software: you can redistribute it and/or modify
6
// it under the terms of the GNU General Public License as published by
7
// the Free Software Foundation, either version 3 of the License, or
8
// (at your option) any later version.
9
//
10
// Moodle is distributed in the hope that it will be useful,
11
// but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
// GNU General Public License for more details.
14
//
15
// You should have received a copy of the GNU General Public License
16
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17
 
18
/**
19
 * @package    moodlecore
20
 * @subpackage backup-helper
21
 * @copyright  2010 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com}
22
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23
 */
24
 
25
/**
26
 * Implementation of iterator interface to work with common arrays
27
 *
28
 * This class implements the iterator interface in order to provide one
29
 * common API to be used in backup and restore when, within the same code,
30
 * both database recordsets (already iteratorors) and arrays of information
31
 * are used.
32
 *
33
 * TODO: Finish phpdocs
34
 */
35
class backup_array_iterator implements iterator {
36
 
37
    private $arr;
38
 
39
    public function __construct(array $arr) {
40
        $this->arr = $arr;
41
    }
42
 
43
    public function rewind(): void {
44
        reset($this->arr);
45
    }
46
 
47
    #[\ReturnTypeWillChange]
48
    public function current() {
49
        return current($this->arr);
50
    }
51
 
52
    #[\ReturnTypeWillChange]
53
    public function key() {
54
        return key($this->arr);
55
    }
56
 
57
    public function next(): void {
58
        next($this->arr);
59
    }
60
 
61
    public function valid(): bool {
62
        return key($this->arr) !== null;
63
    }
64
 
65
    public function close() { // Added to provide compatibility with recordset iterators
66
        reset($this->arr); // Just reset the array
67
    }
68
}