gmi / toolkit-sorter
排序接口和文件排序器
1.0.2
2021-02-09 09:03 UTC
Requires
- php: >=5.6.0
Requires (Dev)
- phpunit/phpunit: ^5.6|^6.5|^7.5
- symfony/phpunit-bridge: ^4.2
README
此库为排序操作提供了简单的抽象。
在版本1.0中,toolkit-sorter通过多种标准轻松排序文件。文件以SplFileInfo
对象的形式传递,例如从Symfony的Finder组件检索。
在未来的版本中,将添加额外的可重用排序算法。
当前构建状态和代码分析可在此处找到
要求
- PHP 5.6.0 或更高版本
安装
推荐通过composer安装toolkit-sorter。
"require": { "gmi/toolkit-sorter": "1.0.*" }
用法示例
SplFileInfo对象的排序
use Gmi\Toolkit\Sorter\NaturalFileSorter; $files = ['file1.pdf', 'file2.pdf']; $fileInfos = []; foreach ($files as $file) { $fileInfos[] = new SplFileInfo($file); } $sorter = new NaturalFileSorter(); $sorter->sort($fileInfos);
根据多个标准对SplFileInfo对象进行排序
use Gmi\Toolkit\Sorter\GroupSorter; use Gmi\Toolkit\Sorter\ExtensionFileSorter; use Gmi\Toolkit\Sorter\SizeFileSorter; $files = ['file1.pdf', 'file2.pdf', 'file3.pdf', 'file1.jpg', 'file4.pdf', 'file2.jpg']; $fileInfos = []; foreach ($files as $file) { $fileInfos[] = new SplFileInfo($file); } $sorter = new GroupSorter([new ExtensionFileSorter(), new SizeFileSorter()]); $sorter->sort($fileInfos);
排序Symfony Finder结果
use Symfony\Component\Finder\Finder; use Gmi\Toolkit\Sorter\SizeFileSorter; $finder = new Finder(); $finder->files()->name('/\.jpg$/i')->in($folder); $files = iterator_to_array($finder); $sorter = new SizeFileSorter(); $sorter->sort($files);
使用Symfony Finder直接排序
use Symfony\Component\Finder\Finder; use Gmi\Toolkit\Sorter\ModificationDateFileSorter; $finder = new Finder(); $finder->files()->name('/\.jpg$/i')->in($folder); $sorter = new ModificationDateFileSorter(); $finder->sort($sorter->getClosure());
测试
可以使用vendor/bin/phpunit tests
运行测试套件。