[BUGFIX] Suffix all interfaces with Interface
[Packages/TYPO3.CMS.git] / typo3 / sysext / install / Classes / Updates / PrerequisiteCollection.php
1 <?php
2 declare(strict_types = 1);
3 namespace TYPO3\CMS\Install\Updates;
4
5 /*
6 * This file is part of the TYPO3 CMS project.
7 *
8 * It is free software; you can redistribute it and/or modify it under
9 * the terms of the GNU General Public License, either version 2
10 * of the License, or any later version.
11 *
12 * For the full copyright and license information, please read the
13 * LICENSE.txt file that was distributed with this source code.
14 *
15 * The TYPO3 project - inspiring people to share!
16 */
17
18 use TYPO3\CMS\Core\Utility\GeneralUtility;
19
20 class PrerequisiteCollection implements \IteratorAggregate
21 {
22 /**
23 * @var \ArrayObject
24 */
25 protected $prerequisites;
26
27 public function __construct()
28 {
29 $this->prerequisites = new \ArrayObject();
30 }
31
32 /**
33 * @param string $prerequisiteClass
34 */
35 public function add(string $prerequisiteClass): void
36 {
37 if (
38 !($this->prerequisites[$prerequisiteClass] ?? false)
39 && is_a($prerequisiteClass, PrerequisiteInterface::class, true)
40 ) {
41 $this->prerequisites[$prerequisiteClass] = GeneralUtility::makeInstance(
42 $prerequisiteClass
43 );
44 }
45 }
46
47 /**
48 * @return \ArrayObject|\Traversable|PrerequisiteInterface[]
49 */
50 public function getIterator()
51 {
52 return $this->prerequisites;
53 }
54 }