Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
6 / 6
CRAP
100.00% covered (success)
100.00%
1 / 1
Iterator
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
6 / 6
6
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 rewind
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 current
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 key
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 next
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 valid
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2/**
3 * This file is part of PHPPresentation - A pure PHP library for reading and writing
4 * presentations documents.
5 *
6 * PHPPresentation is free software distributed under the terms of the GNU Lesser
7 * General Public License version 3 as published by the Free Software Foundation.
8 *
9 * For the full copyright and license information, please read the LICENSE
10 * file that was distributed with this source code. For the full list of
11 * contributors, visit https://github.com/PHPOffice/PHPPresentation/contributors.
12 *
13 * @see        https://github.com/PHPOffice/PHPPresentation
14 *
15 * @license     http://www.gnu.org/licenses/lgpl.txt LGPL version 3
16 */
17
18declare(strict_types=1);
19
20namespace PhpOffice\PhpPresentation\Slide;
21
22use IteratorIterator;
23use PhpOffice\PhpPresentation\PhpPresentation;
24use ReturnTypeWillChange;
25
26// @phpstan-ignore-next-line
27class Iterator extends IteratorIterator
28{
29    /**
30     * Presentation to iterate.
31     *
32     * @var PhpPresentation
33     */
34    private $subject;
35
36    /**
37     * Current iterator position.
38     *
39     * @var int
40     */
41    private $position = 0;
42
43    /**
44     * Create a new slide iterator.
45     */
46    public function __construct(PhpPresentation $subject)
47    {
48        $this->subject = $subject;
49    }
50
51    /**
52     * Rewind iterator.
53     */
54    #[ReturnTypeWillChange]
55    public function rewind(): void
56    {
57        $this->position = 0;
58    }
59
60    /**
61     * Current \PhpOffice\PhpPresentation\Slide.
62     *
63     * @return \PhpOffice\PhpPresentation\Slide
64     */
65    #[ReturnTypeWillChange]
66    public function current()
67    {
68        return $this->subject->getSlide($this->position);
69    }
70
71    /**
72     * Current key.
73     *
74     * @return int
75     */
76    #[ReturnTypeWillChange]
77    public function key()
78    {
79        return $this->position;
80    }
81
82    /**
83     * Next value.
84     */
85    #[ReturnTypeWillChange]
86    public function next(): void
87    {
88        ++$this->position;
89    }
90
91    /**
92     * More \PhpOffice\PhpPresentation\Slide instances available?
93     *
94     * @return bool
95     */
96    #[ReturnTypeWillChange]
97    public function valid()
98    {
99        return $this->position < $this->subject->getSlideCount();
100    }
101}