Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x

ExcludeIterator.php

Namespace

SebastianBergmann\FileIterator

File

vendor/phpunit/php-file-iterator/src/ExcludeIterator.php

View source
<?php

declare (strict_types=1);

/*
 * This file is part of phpunit/php-file-iterator.
 *
 * (c) 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 SebastianBergmann\FileIterator;

use function assert;
use function str_starts_with;
use RecursiveDirectoryIterator;
use RecursiveFilterIterator;
use SplFileInfo;

/**
 * @internal This class is not covered by the backward compatibility promise for phpunit/php-file-iterator
 */
final class ExcludeIterator extends RecursiveFilterIterator {
    
    /**
     * @psalm-var list<string>
     */
    private array $exclude;
    
    /**
     * @psalm-param list<string> $exclude
     */
    public function __construct(RecursiveDirectoryIterator $iterator, array $exclude) {
        parent::__construct($iterator);
        $this->exclude = $exclude;
    }
    public function accept() : bool {
        $current = $this->current();
        assert($current instanceof SplFileInfo);
        $path = $current->getRealPath();
        if ($path === false) {
            return false;
        }
        foreach ($this->exclude as $exclude) {
            if (str_starts_with($path, $exclude)) {
                return false;
            }
        }
        return true;
    }
    public function hasChildren() : bool {
        return $this->getInnerIterator()
            ->hasChildren();
    }
    public function getChildren() : self {
        return new self($this->getInnerIterator()
            ->getChildren(), $this->exclude);
    }
    public function getInnerIterator() : RecursiveDirectoryIterator {
        $innerIterator = parent::getInnerIterator();
        assert($innerIterator instanceof RecursiveDirectoryIterator);
        return $innerIterator;
    }

}

Classes

Title Deprecated Summary
ExcludeIterator @internal This class is not covered by the backward compatibility promise for phpunit/php-file-iterator

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal