toolkit/fsutil

PHP的一些文件系统工具库

v2.0.6 2023-04-16 05:36 UTC

This package is auto-updated.

Last update: 2024-08-26 07:18:29 UTC


README

License Php Version Latest Stable Version Actions Status

一些有用的PHP文件系统工具

  • 基本文件系统操作
  • 文件读写操作
  • 目录操作
  • 文件修改监控
  • 文件查找器
  • 文件树构建器

安装

  • 需要PHP 8.0+
composer require toolkit/fsutil

文件查找器

use Toolkit\FsUtil\Extra\FileFinder;

$finder = FileFinder::create()
    ->files()
    ->name('*.php')
    // ->ignoreVCS(false)
    // ->ignoreDotFiles(false)
    // ->exclude('tmp')
    ->notPath('tmp')
    ->inDir(dirname(__DIR__));

foreach ($finder as $file) {
    // var_dump($file);
    echo "+ {$file->getPathname()}\n";
}

文件树构建器

FileTreeBuilder - 可以快速创建目录和文件,复制目录和文件。

  • 可以在 dir()copy() 等方法中使用路径变量。例如:copy('{baseDir}/to/file', '{workdir}/dst/file')

快速开始

use Toolkit\FsUtil\Extra\FileTreeBuilder;

$ftb = FileTreeBuilder::new()
    ->setWorkdir($workDir)
    ->setShowMsg(true);

// copy dir to $workDir and with exclude match.
$ftb->copyDir('/path/to/dir', './', ['exclude'  => ['*.tpl']])
    ->copy('/tplDir/some.file', 'new-file.txt') // copy file to $workDir/new-file.txt
    // make new dir $workDir/new-dir
    ->dir('new-dir', function (FileTreeBuilder $ftb) {
        $ftb->file('sub-file.txt') // create file on $workDir/new-dir
            ->dirs('sub-dir1', 'sub-dir2'); // make dirs on $workDir/new-dir
    })
    ->file('new-file1.md', 'contents'); // create file on $workDir

将创建如下文件树

./
 |-- new-file.txt
 |-- new-dir/
     |-- sub-file.txt
     |-- sub-dir1/
     |-- sub-dir2/
 |-- new-file1.md

路径变量

  • tplDir 模板目录路径
  • baseDir 基础工作目录路径,仅在首次设置工作目录时初始化。
  • current,workdir 当前工作目录路径。
  • 以及在 tplVars 中的所有简单类型变量。

在路径字符串中的使用:{baseDir}/file

修改监控器

use Toolkit\FsUtil\Extra\ModifyWatcher;

$w  = new ModifyWatcher();
$ret = $w
    // ->setIdFile(__DIR__ . '/tmp/dir.id')
    ->watch(dirname(__DIR__))
    ->isChanged();

// d41d8cd98f00b204e9800998ecf8427e
// current file:  ae4464472e898ba0bba8dc7302b157c0
var_dump($ret, $mw->getDirMd5(), $mw->getFileCounter());

许可证

MIT