toolkit/fsutil

some file system tool library of the php

Maintainers

👁 inhere

Package info

github.com/php-toolkit/fsutil

pkg:composer/toolkit/fsutil

Statistics

Installs: 6 643

Dependents: 4

Suggesters: 0

Stars: 6

Open Issues: 0

v2.0.7 2025-04-19 14:18 UTC

Requires

Requires (Dev)

None

Suggests

Provides

None

Conflicts

None

Replaces

None

MIT 1ad0551771377da2395b14ae892fb17d96ed426c

phpfilesystemlibrarytool


README

👁 License
👁 Php Version Support
👁 Latest Stable Version
👁 Actions Status

Some useful file system util for php.

  • basic filesystem operation
  • file read/write operation
  • directory operation
  • file modify watcher
  • files finder
  • file tree builder

Install

  • Required PHP 8.0+
composer require toolkit/fsutil

File Finder

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";
}

File Tree Builder

FileTreeBuilder - can be quickly create dirs and files, copy dir and files.

  • can use path var in dir(), copy() ... methods. eg: copy('{baseDir}/to/file', '{workdir}/dst/file')

Quick start:

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

Will create file tree like:

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

path vars

  • tplDir The template dir path
  • baseDir base workdir path, only init on first set workdir.
  • current,workdir current workdir path.
  • And all simple type var in tplVars.

Usage in path string: {baseDir}/file

Modify Watcher

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());

License

MIT