Вход Регистрация
Файл: concrete5.7.5.6/concrete/vendor/symfony/finder/Symfony/Component/Finder/Iterator/FilterIterator.php
Строк: 64
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SymfonyComponentFinderIterator;

/**
 * This iterator just overrides the rewind method in order to correct a PHP bug.
 *
 * @see https://bugs.php.net/bug.php?id=49104
 *
 * @author Alex Bogomazov
 */
abstract class FilterIterator extends FilterIterator
{
    
/**
     * This is a workaround for the problem with FilterIterator leaving inner FilesystemIterator in wrong state after
     * rewind in some cases.
     *
     * @see FilterIterator::rewind()
     */
    
public function rewind()
    {
        
$iterator $this;
        while (
$iterator instanceof OuterIterator) {
            
$innerIterator $iterator->getInnerIterator();

            if (
$innerIterator instanceof RecursiveDirectoryIterator) {
                if (
$innerIterator->isRewindable()) {
                    
$innerIterator->next();
                    
$innerIterator->rewind();
                }
            } elseif (
$iterator->getInnerIterator() instanceof FilesystemIterator) {
                
$iterator->getInnerIterator()->next();
                
$iterator->getInnerIterator()->rewind();
            }
            
$iterator $iterator->getInnerIterator();
        }

        
parent::rewind();
    }
}
Онлайн: 2
Реклама