Saeghe is a difficult name to pronounce. Therefore, Saeghe project has been renamed to phpkg.
This website no longer receives updates.
Please visit phpkg website at phpkg.com
The FilesystemTree
class extends Datatype Tree
class.
You can use it to keep a filesystem tree.
It also gives you access to an API that you can see in the following.
Note For more information on the
Tree
class, please read its documentation
You can use the recursively
method on the Directory
class to get a FilesystemTree
or use the constructor and make it by yourself.
use Saeghe\FileManager\Filesystem\Directory;
use Saeghe\FileManager\Filesystem\FilesystemTree;
$directory = Directory::from_string(root() . 'PlayGround');
$directory->file('.hidden')->create('');
$directory->subdirectory('Subdirectories')->make_recursive();
$directory->subdirectory('Subdirectories')->file('file1.txt')->create('');
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory1')->make_recursive();
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory1')->symlink('symlink1')
->link($directory->subdirectory('Subdirectories')->file('file1.txt'));
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory2')->make_recursive();
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory1')->subdirectory('subdirectory3')->make_recursive();
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory1')->subdirectory('subdirectory3')->file('file2.txt')->create('');
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory1')->subdirectory('subdirectory3')->symlink('symlink2')
->link($directory->subdirectory('Subdirectories')->subdirectory('subdirectory1')->subdirectory('subdirectory3')->file('file2.txt'));
$results = $directory->recursively();
assert_true([
$directory,
$directory->file('.hidden'),
$directory->subdirectory('Subdirectories'),
$directory->subdirectory('Subdirectories')->file('file1.txt'),
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory1'),
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory1')->subdirectory('subdirectory3'),
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory1')->subdirectory('subdirectory3')->file('file2.txt'),
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory1')->subdirectory('subdirectory3')->symlink('symlink2'),
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory1')->symlink('symlink1'),
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory2'),
] == $results->vertices()->items());
assert_true([
new Pair($directory, $directory->file('.hidden')),
new Pair($directory, $directory->subdirectory('Subdirectories')),
new Pair($directory->subdirectory('Subdirectories'), $directory->subdirectory('Subdirectories')->file('file1.txt')),
new Pair($directory->subdirectory('Subdirectories'), $directory->subdirectory('Subdirectories')->subdirectory('subdirectory1')),
new Pair(
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory1'),
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory1')->subdirectory('subdirectory3')
),
new Pair(
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory1')->subdirectory('subdirectory3'),
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory1')->subdirectory('subdirectory3')->file('file2.txt')
),
new Pair(
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory1')->subdirectory('subdirectory3'),
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory1')->subdirectory('subdirectory3')->symlink('symlink2')
),
new Pair(
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory1'),
$directory->subdirectory('Subdirectories')->subdirectory('subdirectory1')->symlink('symlink1')
),
new Pair($directory->subdirectory('Subdirectories'), $directory->subdirectory('Subdirectories')->subdirectory('subdirectory2')),
] == $results->edges()->items());
Here you can see a list of the available methods on the filesystem tree:
It returns a collection of files in the tree, recursively, contains the hidden files.
public function files(): FilesystemCollection
$root = Directory::from_string('/');
$root_file = $root->file('file');
$home = $root->subdirectory('home');
$file1 = $home->file('file1');
$symlink = $home->symlink('symlink');
$documents = $home->subdirectory('documents');
$document_file = $documents->file('file');
$tree = new FilesystemTree($root);
$tree->edge($root, $home)
->edge($root, $root_file)
->edge($home, $file1)
->edge($home, $symlink)
->edge($home, $documents)
->edge($documents, $document_file);
assert_true([
$root_file,
$file1,
$document_file
] == $tree->files()->items());