Initial commit
This commit is contained in:
30
src/RecursiveDocumentLocator.php
Normal file
30
src/RecursiveDocumentLocator.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Collection;
|
||||
use PDF\Document;
|
||||
|
||||
class RecursiveDocumentLocator
|
||||
{
|
||||
private DocumentFactory $documentFactory;
|
||||
|
||||
public function __construct(?DocumentFactory $documentFactory = null)
|
||||
{
|
||||
$this->documentFactory = $documentFactory ?? new DocumentFactory();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Collection<Document>|Document[]
|
||||
*/
|
||||
public function findDocuments(string $directory): Collection
|
||||
{
|
||||
$iterator = new RecursiveIteratorIterator(
|
||||
new RecursiveDirectoryIterator($directory),
|
||||
RecursiveIteratorIterator::SELF_FIRST
|
||||
);
|
||||
|
||||
return collect($iterator)
|
||||
->filter(static fn(SplFileInfo $fileInfo) => $fileInfo->isFile())
|
||||
->filter(static fn(SplFileInfo $fileInfo) => preg_match('/.pdf$/i', $fileInfo->getBasename()))
|
||||
->map(fn(SplFileInfo $fileInfo) => $this->documentFactory->createDocument($fileInfo));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user