source: pro-violet-viettel/sourcecode/application/libraries/Doctrine/ORM/Internal/Hydration/IterableResult.php @ 356

Last change on this file since 356 was 345, checked in by quyenla, 11 years ago

collaborator page

File size: 2.5 KB
Line 
1<?php
2/*
3 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
4 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
5 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
6 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14 *
15 * This software consists of voluntary contributions made by many individuals
16 * and is licensed under the LGPL. For more information, see
17 * <http://www.doctrine-project.org>.
18 */
19
20namespace Doctrine\ORM\Internal\Hydration;
21
22/**
23 * Represents a result structure that can be iterated over, hydrating row-by-row
24 * during the iteration. An IterableResult is obtained by AbstractHydrator#iterate().
25 *
26 * @author robo
27 * @since 2.0
28 */
29class IterableResult implements \Iterator
30{
31    /**
32     * @var \Doctrine\ORM\Internal\Hydration\AbstractHydrator
33     */
34    private $_hydrator;
35
36    /**
37     * @var boolean
38     */
39    private $_rewinded = false;
40
41    /**
42     * @var integer
43     */
44    private $_key = -1;
45
46    /**
47     * @var object
48     */
49    private $_current = null;
50
51    /**
52     * @param \Doctrine\ORM\Internal\Hydration\AbstractHydrator $hydrator
53     */
54    public function __construct($hydrator)
55    {
56        $this->_hydrator = $hydrator;
57    }
58
59    public function rewind()
60    {
61        if ($this->_rewinded == true) {
62            throw new HydrationException("Can only iterate a Result once.");
63        } else {
64            $this->_current = $this->next();
65            $this->_rewinded = true;
66        }
67    }
68
69    /**
70     * Gets the next set of results.
71     *
72     * @return array
73     */
74    public function next()
75    {
76        $this->_current = $this->_hydrator->hydrateRow();
77        $this->_key++;
78        return $this->_current;
79    }
80
81    /**
82     * @return mixed
83     */
84    public function current()
85    {
86        return $this->_current;
87    }
88
89    /**
90     * @return int
91     */
92    public function key()
93    {
94        return $this->_key;
95    }
96
97    /**
98     * @return bool
99     */
100    public function valid()
101    {
102        return ($this->_current!=false);
103    }
104}
Note: See TracBrowser for help on using the repository browser.