*/ public function size($path) { if (!@\file_exists($path)) { return new Failure(new FilesystemException( "Path does not exist" )); } elseif (!@\is_file($path)) { return new Failure(new FilesystemException( "Path is not a regular file" )); } elseif (($size = @\filesize($path)) === false) { return new Failure(new FilesystemException( \error_get_last()["message"] )); } else { \clearstatcache($path); return new Success($size); } } /** * Does the specified path exist and is it a directory? * * If the path does not exist the returned Promise will resolve * to FALSE. It will NOT reject with an error. * * @param string $path An absolute file system path * @return \Amp\Promise */ public function isdir($path) { if (!@\file_exists($path)) { return new Success(false); } $isDir = @\is_dir($path); \clearstatcache($path); return new Success($isDir); } /** * Does the specified path exist and is it a file? * * If the path does not exist the returned Promise will resolve * to FALSE. It will NOT reject with an error. * * @param string $path An absolute file system path * @return \Amp\Promise */ public function isfile($path) { if (!@\file_exists($path)) { return new Success(false); } $isFile = @\is_file($path); \clearstatcache($path); return new Success($isFile); } /** * Retrieve the path's last modification time as a unix timestamp * * @param string $path An absolute file system path * @return \Amp\Promise */ public function mtime($path) { if (!@\file_exists($path)) { return new Failure(new FilesystemException( "Path does not exist" )); } $mtime = @\filemtime($path); \clearstatcache($path); return new Success($mtime); } /** * Retrieve the path's last access time as a unix timestamp * * @param string $path An absolute file system path * @return \Amp\Promise */ public function atime($path) { if (!@\file_exists($path)) { return new Failure(new FilesystemException( "Path does not exist" )); } $atime = @\fileatime($path); \clearstatcache($path); return new Success($atime); } /** * Retrieve the path's creation time as a unix timestamp * * @param string $path An absolute file system path * @return \Amp\Promise */ public function ctime($path) { if (!@\file_exists($path)) { return new Failure(new FilesystemException( "Path does not exist" )); } $ctime = @\filectime($path); \clearstatcache($path); return new Success($ctime); } /** * {@inheritdoc} */ public function lstat($path) { if ($stat = @\lstat($path)) { \clearstatcache(true, $path); } else { $stat = null; } return new Success($stat); } /** * {@inheritdoc} */ public function symlink($target, $link) { return new Success((bool) @\symlink($target, $link)); } /** * {@inheritdoc} */ public function rename($from, $to) { return new Success((bool) @\rename($from, $to)); } /** * {@inheritdoc} */ public function unlink($path) { return new Success((bool) @\unlink($path)); } /** * {@inheritdoc} */ public function mkdir($path, $mode = 0644) { return new Success((bool) @\mkdir($path, $mode)); } /** * {@inheritdoc} */ public function rmdir($path) { return new Success((bool) @\rmdir($path)); } /** * {@inheritdoc} */ public function scandir($path) { if (!@\is_dir($path)) { return new Failure(new FilesystemException( "Not a directory" )); } elseif ($arr = @\scandir($path)) { $arr = \array_values(\array_filter($arr, function($el) { return !($el === "." || $el === ".."); })); \clearstatcache(true, $path); return new Success($arr); } else { return new Failure(new FilesystemException( "Failed reading contents from {$path}" )); } } /** * {@inheritdoc} */ public function chmod($path, $mode) { return new Success((bool) @\chmod($path, $mode)); } /** * {@inheritdoc} */ public function chown($path, $uid, $gid) { if (!@\chown($path, $uid)) { return new Failure(new FilesystemException( \error_get_last()["message"] )); } elseif (!@\chgrp($path, $gid)) { return new Failure(new FilesystemException( \error_get_last()["message"] )); } else { return new Success; } } /** * {@inheritdoc} */ public function touch($path) { return new Success((bool) \touch($path)); } /** * {@inheritdoc} */ public function get($path) { $result = @\file_get_contents($path); return ($result === false) ? new Failure(new FilesystemException(\error_get_last()["message"])) : new Success($result) ; } /** * {@inheritdoc} */ public function put($path, $contents) { $result = @\file_put_contents($path, $contents); return ($result === false) ? new Failure(new FilesystemException(\error_get_last()["message"])) : new Success($result) ; } }