pathResolver = $pathResolver; } protected function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'limit' => 15, //Given only 15 entries 'filename_filter' => '', //Filter the filenames. For example *.jpg to only get jpegs. Can also be an array 'placeholders' => Attachment::BUILTIN_PLACEHOLDER, //By default use all builtin ressources ]); } public function find(string $keyword, array $options) : array { $finder = new Finder(); $resolver = new OptionsResolver(); $this->configureOptions($resolver); $options = $resolver->resolve($options); //We search only files $finder->files(); $finder->in($this->pathResolver->getFootprintsPath()); //Apply filter if needed if (!empty($options['filename_filter'])) { $finder->name($options['filename_filter']); } $finder->path($keyword); $arr = []; $limit = $options['limit']; foreach ($finder as $file) { if ($limit <= 0) { break; } $arr[] = $this->pathResolver->realPathToPlaceholder($file->getPathname()); $limit--; } return $arr; } }