Atlas provides an easy and accessible interface to file system interaction. Read, write, copy and move files without breaking a sweat.
Get news and updates on the DecodeLabs blog.
Install via Composer:
composer require decodelabs/atlas
Atlas uses Veneer to provide a unified frontage under DecodeLabs\Atlas
.
You can access all the primary functionality via this static frontage without compromising testing and dependency injection.
There are many standard filesystem functions represented by either File
or Dir
objects.
See Context.php, File/Local.php and Dir/Local.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::file('my/file')
->renameTo('file.txt')
->setOwner('user');
Atlas::gzFile('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 Fs.php or Dir/Local.php for all scanning options.
Looking for the IO Broker and Channel transfer interfaces?
This has been moved to its own project, Deliverance.
Looking for the mime type detection stuff that used to be here?
This has been moved to its own project, Typify.
Atlas is licensed under the MIT License. See LICENSE for the full license text.