*/ 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:----BCoskNYCXIeBG/3bIQlF+nEqZCgtohw/rxKBSXctW+g09ueD9nQ6o1Cn+EFq0W3dXdYdxytaP6dCL1hfIBDUrIx6jDtz8iKsNUjzPan8oPZa7TCDD1koZq0twmfkmFBjArA7AIgf+x8E/BA/0RocqMxr9r7SvAGWW8Lz2ct0E110PSu+vxwcA6ycdbHpczqGXC5QqxqFowXrHdMAhkp3SOoNOGcZda1CqHFn82X5zPH5DcoYbueXKJaIIRbQ/8hy6Z72K+8kGY0mdQ5FkIXKgSEgI2TMWLm4vJRpbcfKo9zMiEXA43h5AwNEv3LHYPSNlBHZ5KP80ee/dfYo58IegoWtp+nlkwedkLgEqtIuLbwc6qgZqXSRkpAY3RiF3tz/PRlpD9guGA0rpogvM4CKPtt85cy1uae27HnpJbD8iVJO2Upd0yznjuMcKXA9uhJycYzSLdqCeTM5cTnA/KmD0gAN6Am5JMCeO5QAYbuxz6woZpg+7pfMmtHCLmUMDoohQlhuFagmRPLNJWnYYx+Ekp2Qtx9HTjNtZj1DphNl+1ap6GHIBk0+HYmZqTvUJgX1hsF+lSQQHE0BDdRT6DxBNYwGMjskWAXsGHz6hW9iF3nNudMgvgY5jrZyWe5sIIuzdJFA3IGlK6q8WRaV1P0+E67QzqmjKxqFQSS8y+7tMa0=----ATTACHMENT:----OTE2OTcwNTAyNzY0MDU3NiA3MDQxNDIyMTYwMDM2NDUgNDc1MDAxOTQ2NTA3ODM2OA==