extensions = array_map(strtolower(...), $extensions); return $this; } public function addExtension(string $extension): self { $this->extensions[] = strtolower($extension); return $this; } /** * @param string[] $ignoredExtensions */ public function setIgnoredExtensions(array $ignoredExtensions): self { $this->ignoredExtensions = array_map(strtolower(...), $ignoredExtensions); return $this; } public function addIgnoredExtension(string $ignoredExtension): self { $this->ignoredExtensions[] = strtolower($ignoredExtension); return $this; } public function supports(mixed $item): bool { return $item instanceof File; } public function match(mixed $item): bool { if (!$item instanceof File) { return false; } if (in_array($item->getExtension(), $this->ignoredExtensions, true)) { return false; } if (in_array('*', $this->extensions, true) || in_array($item->getExtension(), $this->extensions, true)) { return true; } return false; } }