phpdocumentor/flyfinder

Flysystem插件,为Filesystem实体添加文件查找功能

2.0.0 2024-09-15 19:58 UTC

README

License: MIT Scrutinizer Code Coverage Scrutinizer Code Quality Stable Version Unstable Version

FlyFinder

FlyFinder是一个针对Flysystem的实用类,可以基于某些条件查找文件。

FlyFinder可以搜索隐藏的文件(无论是文件本身隐藏,还是位于隐藏目录中),具有特定扩展名或存在于特定路径中的文件。

Flyfinder不会返回目录本身... 只返回文件。

安装

安装此库的最简单方法是使用以下命令通过Composer

$ composer require phpdocumentor/flyfinder

示例

准备好开始而不想阅读下面的所有文本?请参阅示例文件夹,并检查您想要执行的操作类型。

用法

为了使用FlyFinder插件,您首先需要一个带有适配器的Flyfinder文件系统,例如本地适配器。

use League\Flysystem\Filesystem;
use League\Flysystem\Local\LocalFilesystemAdapter as LocalAdapter;
use Flyfinder\Finder;

$filesystem = new Filesystem(new LocalAdapter(__DIR__.'/path/to/files/'));

现在您可以创建Finder实例

$finder = new Finder($filesystem); 

FlyFinder需要规格来了解要查找什么。以下是一些可用的规格

  • IsHidden(当文件或目录被隐藏时,此规格将返回true),
  • HasExtension(当文件或目录具有指定的扩展名时,此规格将返回true),
  • InPath(当文件位于给定的路径时,此规格将返回true。允许使用通配符。)
    • 请注意,此路径应视为相对于$filesystem路径的相对路径

规格可以如下实例化

use Flyfinder\Path;
use Flyfinder\Specification\IsHidden;
use Flyfinder\Specification\HasExtension;
use Flyfinder\Specification\InPath;

$isHidden = new IsHidden();
$hasExtension = new HasExtension(['txt']);
$inPath = new InPath(new Path('mydir'));

组合规格

您可以通过组合规格在更多标准上进行搜索。规格可以如下链式使用

$isHidden->andSpecification($hasExtension)将找到所有隐藏且具有给定扩展名的文件和目录。

$isHidden->orSpecification($hasExtension)将找到所有隐藏或具有给定扩展名的文件和目录。

$isHidden->notSpecification将找到所有非隐藏的文件和目录。

您还可以创建更长的链,如下所示

$specification = $inPath->andSpecification($hasExtension)->andSpecification($isHidden->notSpecification());

这将找到给定路径中具有给定扩展名且非隐藏的所有文件。