Вход Регистрация
Файл: vendor/phar-io/manifest/src/xml/ElementCollection.php
Строк: 83
<?php declare(strict_types 1);
/*
 * This file is part of PharIoManifest.
 *
 * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
namespace PharIoManifest;

use 
DOMElement;
use 
DOMNodeList;

abstract class 
ElementCollection implements Iterator {
    
/** @var DOMElement[] */
    
private $nodes = [];

    
/** @var int */
    
private $position;

    public function 
__construct(DOMNodeList $nodeList) {
        
$this->position 0;
        
$this->importNodes($nodeList);
    }

    
#[ReturnTypeWillChange]
    
abstract public function current();

    public function 
next(): void {
        
$this->position++;
    }

    public function 
key(): int {
        return 
$this->position;
    }

    public function 
valid(): bool {
        return 
$this->position count($this->nodes);
    }

    public function 
rewind(): void {
        
$this->position 0;
    }

    protected function 
getCurrentElement(): DOMElement {
        return 
$this->nodes[$this->position];
    }

    private function 
importNodes(DOMNodeList $nodeList): void {
        foreach (
$nodeList as $node) {
            if (!
$node instanceof DOMElement) {
                throw new 
ElementCollectionException(
                    
sprintf('DOMElement expected, got %s'get_class($node))
                );
            }

            
$this->nodes[] = $node;
        }
    }
}
Онлайн: 0
Реклама