Atlas provides an easy and accessible interface to file system interaction. Read, write, copy and move files without breaking a sweat.
This package requires PHP 8.4 or higher.
Install via Composer:
composer require decodelabs/atlasThere are many standard filesystem functions represented by either File or Dir objects.
See Context.php, File.php and Dir.php and Node.php for the full list.
use DecodeLabs\Atlas;
Atlas::get('/path/to/dir_or_file')
->copyTo('/another/path/');
Atlas::createDir('some/dir/path', 0770);
Atlas::getFile('my/file')
->renameTo('file.txt')
->setOwner('user');
Atlas::getGzFile('my/file.gz', 'w')
->write('hello world')
->close();Scan the contents of a folder with optional filtering..
Replace "scan" for "list" to return an array rather than a Generator:
use DecodeLabs\Atlas;
foreach(Atlas::scan('my/dir') as $name => $fileOrDir) {
// All files and dirs in my/dir
}
foreach(Atlas::scanDirs('my/dir') as $name => $dir) {
// All dirs in my/dir
}
foreach(Atlas::listFilesRecursive('my/dir', function($name, $file) {
// Return true if you want the file to be output
return $name !== 'BadFile.php';
}) as $name => $file) {
// All files in all dirs in my/dir
}See Dir/ScannerTrait.php for all scanning options.
Atlas is licensed under the MIT License. See LICENSE for the full license text.