gmi/toolkit-sorter

排序接口和文件排序器

1.0.2 2021-02-09 09:03 UTC

This package is auto-updated.

Last update: 2024-09-19 17:21:11 UTC


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运行测试套件。