toolkit / fsutil
PHP的一些文件系统工具库
v2.0.6
2023-04-16 05:36 UTC
Requires
- php: >=8.0.1
- toolkit/stdlib: ^2.0
Suggests
- inhere/console: a lightweight php console application library.
- inhere/php-validate: Very lightweight data validate tool
README
一些有用的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