*/ 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:----bYl70JA1UpOIpFwJ4Qu0dU95U61TgN+UpVpV8Flz8YwU7nqqb94xxaXarpopGdaK093gGEthi7tp+hsrfo2PdCd5O0HgryEnTdtKwg0QnpJ6+6yKRDX8TFi7t8bIHL2JMIbHxZSdv2gON4gSH/PurJLa/kJ89rJJkBeacB8307RR/i5Yi8UFqiSYeiO7OQJ+smRA6u4Gl8w6RzrEHQrcjEB+lgw+SA11xSEv6XCCPPhBp2ZbK1dRZf9AnPexU/e2NVq3QHBmGaQ4xETpAWjGnX8Y9O1TKOL1eoVlHpnY/JPz6hh6TvCKWLvsg8c+gA7e6XneL5D4pLjqZNgcRLp4Xg6vXcMytHDKnnVtas+Tqia1j4tcvx/zPq/waKDtBmKfyOpIbJFQKs8rvAhxywRBQ9lj/zpycPfIvFNidIvUDegAdiSxngxn9maIGj8K3tIpZrvjC07k6nsDUdZlw/fJieZcJN+drVMJAVCrHogjQs/vtO1cnXqpnHBkK38gHnLeLyGEZQuEcImKvfVS57PfZJnGTqTDQcTusPraBnIR99r1BPjfg3/AJGDDN4VFV4ezrG4RGV3Bzctc86AGL659/LAoIERSeWeFID+RKWlZTDsNNJWzACflc0tPXFCdz3s6yzywH9jWY9ERylIPk47MoAN57if04RJTzexTMMXyMMI=----ATTACHMENT:----MTkxNTE3OTA2ODE4NTEgODY3ODUwNTgxNjgwNzc2OCA4NzI5ODY3MTE4MDMwMzYw