namespace TypistTech\Imposter;
use RecursiveDirectoryIterator;
use RecursiveIteratorIterator;
class Filesystem implements FilesystemInterface
* @throws \UnexpectedValueException
public function allFiles(string $path): array
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)
return iterator_to_array($iterator);
* Extract the parent directory from a file path.
public function dirname(string $path): string
return pathinfo($path, PATHINFO_DIRNAME);
* Get the contents of a file.
* @throws \RuntimeException
public function get(string $path): string
if (! $this->isFile($path)) {
throw new RuntimeException('File does not exist at path ' . $path);
return file_get_contents($path);
* Determine if the given path is a file.
public function isFile(string $path): bool
* Determine if the given path is a directory.
public function isDir(string $path): bool
* Write the contents of a file.
* @param string $contents
public function put(string $path, string $contents)
return file_put_contents($path, $contents);