# Filesystem

# Summary

Filesystem related functionalities.

# Installing

Filesystem is available through Packagist (opens new window) and the repository source is at chevere/filesystem (opens new window).

# Path

The Path component is charge of interact with filesystem paths (files and folders).

use Chevere\Filesystem\Path;

$path = new Path('/home/var/the-path/');

# Checking a Path

# Path Exists

The exist method determines if the path exists. It returns true when a path exists in the filesystem.

$boolean = $path->exists();

# Path is Writable

The isWritable method determines if the path is writable. It returns true when a path is writable and it supports NFS mounts.

$boolean = $path->isWritable();

# Path is Readable

The isReadable method determines if the path is readable. It returns true when a path is readable.

$boolean = $path->isReadable();

# Path is Directory

The isDir method determines if the path is a directory. It returns true when a path exists in the filesystem and it is a directory.

$boolean = $path->isDir();

# Path is File

The isFile method determines if the path is a file. It returns true when a path exists in the filesystem and it is a file.

$boolean = $path->isFile();

# Altering a Path

# CHMOD

The chmod method applies chmod on the path.

$path->chmod(0777);

# Getting Child Path

The getChild method allows to create new Path instances for sub-paths.

$childPathDirectory = $path
    ->getChild('child/');
$childPathFile = $path
    ->getChild('child-2/some-file.php');

# Directory

The Directory component is in charge of interact with filesystem directories.

use Chevere\Filesystem\Directory;
use Chevere\Filesystem\Path;
use function Chevere\Filesystem\directoryForPath;

$path = '/home/var/';
$directory = new Directory(
    new Path($path)
);
// It can be also created with:
$directory = directoryForPath($path);

# Creating a Directory

The create method creates the directory in the filesystem. The method takes the argument int $mode for the octal mode.

$directory->create(0755);

The createIfNotExists method does exactly the same as create, but only if the directory doesn't exists.

$directory->createIfNotExists(0755);

# Checking a Directory

# Directory Exists

The exist method determines if the directory exists. It returns true when a directory exists in the filesystem.

$boolean = $directory->exists();

# Assert Directory Exists

The assertExists method asserts if the directory exists. Throws exception when the directory doesn't exists in the filesystem.

use Chevere\Filesystem\Exceptions\DirNotExistsException;

$directory->assertExists(); // Throws DirNotExistsException

# Removing Directory contents

The removeContents method removes the contents of the directory.

$removed = $directory->removeContents(); // dir is now empty

# Removing a Directory

The remove method removes the directory and its contents. It returns an array<int, string> with the items removed.

$array = $directory->remove();

The removeIfExists method removes the directory and its contents if the directory exists.

$array = $directory->removeIfExists();

# Get child directory

The getChild method allows to create new Directory instances for sub-directories.

$childDirectory  = $directory
    ->getChild('child/');

# File

The File component in charge of interact with filesystem files.

use Chevere\Filesystem\File;
use Chevere\Filesystem\Path;
use function Chevere\Filesystem\fileForPath;

$path = '/home/var/the-file.php';
$file = new File(
    new Path($path)
);
// It can be also created with:
$file = fileForPath($path);

# Creating a File

The create method creates the file in the filesystem.

$file->create();

The createIfNotExists method creates the file in the filesystem if it doesn't exists.

$file->createIfNotExists();

# Putting Contents to a File

The put method sets the $contents of the file.

$file->put($contents);

# Checking a File

# File Exists

The exist method determines if the file exists. It returns true when a file exists in the filesystem.

$boolean = $file->exists();

# Assert File Exists

The assertExists method asserts if the file exists. Throws Exceptions\FileNotExistsException when the file doesn't exists in the filesystem.

$file->assertExists();

# File is PHP

The isPhp method determines if the file name is a PHP file. It returns true when the file name ends with .php.

$boolean = $file->isPhp();

# Reading a File

# File Contents

The contents method retrieve the contents of the file. It returns string with the file contents.

$string = $file->getContents();

# File Checksum

The checksum method retrieve the checksum of the file. It returns string with the file checksum (SHA256 default).

$string = $file->getChecksum();

FileInterface::CHECKSUM_ALGO determines the algorithm used for file hashing.

# Removing a File

The remove method removes the file.

$file->remove();

The removeIfExists method removes the file if exist.

$file->removeIfExists();

# File PHP

The FilePhp component in charge of interact with PHP files.

use Chevere\Filesystem\File;
use Chevere\Filesystem\FilePhp;
use Chevere\Filesystem\Path;
use function Chevere\Filesystem\filePhpForPath;

$absolute = '/home/var/the-file.php';
$file = new File(
    new Path($absolute)
);
$filePhp = new FilePhp($file);
// It can be also created with:
$filePhp = filePhpForPath($absolute);

# Caching

The compileCache method will cache the PHP file (OPcache).

$filePhp->compileCache();

The flushCache method will destroy the cache (OPcache).

$filePhp->flushCache();

# File PHP Return

The FilePhpReturn component in charge of interact with the return value of PHP files.

use Chevere\Filesystem\File;
use Chevere\Filesystem\FilePhp;
use Chevere\Filesystem\FilePhpReturn;
use Chevere\Filesystem\Path;
use function Chevere\Filesystem\filePhpReturnForPath;

$absolute = '/home/var/the-file.php';
$filePhp = new FilePhp(
    new File(
        new Path($absolute)
    )
);
$filePhpReturn = new FilePhpReturn($filePhp);
// It can be also created with:
$filePhp = filePhpReturnForPath($absolute);

# Reading File PHP Return

# Get return

The get method returns the file return "as-is", equivalent to return require <file>.

$mixed = $filePhpReturn->get();

# Get return typed

The get<Type> method does the same as get, but it validates the variable against the target type.

use function Chevere\Type\typeInteger;

$array => $filePhpReturn->getArray();
$boolean => $filePhpReturn->getBoolean();
$float => $filePhpReturn->getFloat();
$integer => $filePhpReturn->getInteger();
$object => $filePhpReturn->getObject();
$string => $filePhpReturn->getString();

# Putting contents

The put method puts the contents of a variable export into the PHP file as <?php return $variable;.

Type object will be stored as return 'serialized string';.

use Chevere\VariableSupport\StorableVariable;

$storable = new StorableVariable($var);
$filePhpReturn->put($storable);