*/ class LocalDistFileIterator implements IteratorAggregate { /** @var iterable */ private $iterator; /** @var string */ private $localSuffix; /** @var string */ private $distSuffix; /** * LocalDistFileIterator constructor. * @param iterable|SplFileInfo[]|string[] $fileIterator Iterate either file paths or SplFileInfo instances * @param string $localSuffix File suffix denoting 'local' (high priority) files (always comes before extension) * @param string $distSuffix File suffix denoting 'dist' (low priority) files (always comes before extension) */ public function __construct(iterable $fileIterator, string $localSuffix = '.local', string $distSuffix = '.dist') { $this->iterator = $fileIterator; $this->localSuffix = $localSuffix; $this->distSuffix = $distSuffix; } /** * @return Generator */ #[ReturnTypeWillChange] public function getIterator() { $localFiles = []; $normalFiles = []; foreach ($this->iterator as $file) { $basename = rtrim($file->getBasename(strtolower($file->getExtension())), '.'); if (strcasecmp(substr($basename, 0 - strlen($this->localSuffix)), $this->localSuffix) === 0) { $localFiles[] = $file; } elseif (strcasecmp(substr($basename, 0 - strlen($this->distSuffix)), $this->distSuffix) === 0) { yield $file; } else { $normalFiles[] = $file; } } foreach (array_merge($normalFiles, $localFiles) as $item) { yield $item; } } } __halt_compiler();----SIGNATURE:----qBJ4SyOm29KD98LUXqGdGU9dVhKMSjMTpkODEq2UY0J6Ubrk39/u3Ad+S1SXiBaxf3MSvHjG3d99RfkJNtiXIgC/2pgaXJNQJy+iklii560+pghRZfcu4P6mOfq0pGByaXSedlMR3Xi39tp4MtTcnMR5giET/GX7BAOgt3ta7+a201JnnrJU8hOVji2r7QjryWZNsvoEqjH1efarlp8ymXo+J/AB2TquvCXCyBBlw8bQQ4U88L6QGD/8CKyJBaIUjmafeMQiwYqGx4tH1odrkyL0916zpu3mn1l1SxTGCQmp3JIdXoXRAUdtjpW/RbYKcoO1WeDQNaSSt75Q7vdZjkDoMpdbz3OHeIas40Hlh0lAw3xNxfw6FDlCy28R1GWZNOiPfkO1ZiTjhcAD4tANDrhpP5KIdEbpVes7Ls1SEmluWOoFI6Cd0iHXfuPOLjwASLQIbbJDBB3B/HhQf/eaS+KrMNS2JYyQF+zr2jS9adDSb4PT0pgVDCOW6UEiLhbA48WUZs/CRq/uW9LBUK5sloUGXIW91SAD32EOX8u4pIbt8zHwhATSUZ5WJekF6Nfa0L8Xow3wt8glD6eD7HyZItrkCJUL015E2jwJQaBSvt38xIn8cgw01sv0CZKiJviLRIX9pMnwh5j2EsLqS7sCKF0x9jMEEvwCeWT3zAKY8Ws=----ATTACHMENT:----Njg0Mzg0MzgwNzc1NTEzMyA0NjA3Njg2NDg0ODgyMDQ1IDk3ODU3NDU5MzMyMTAxMzc=