* @author HollyTeng */ trait Filesystem { /** * Determine if a file or directory exists. * * @param string $path * * @return bool */ public function exists($path) { return file_exists($path); } /** * Create a file at the given path with the given contents. * * @param string $path * @param string $contents * * @return bool */ public function createFile($path, $contents = '', $lock = false) { $this->createDirectory(dirname($path)); return file_put_contents($path, $contents, $lock ? LOCK_EX : 0); } /** * Create a directory. * * @param string $path * @param int $mode * @param bool $recursive * @param bool $force * * @return bool */ public function createDirectory($path, $mode = 0755, $recursive = true, $force = true) { if ($force) { return @mkdir($path, $mode, $recursive); } return mkdir($path, $mode, $recursive); } /** * Delete an existing file or directory at the given path. * * @param string $path * * @return bool */ public function delete($path) { $filesystem = new IlluminateFilesystem(); $filesystem->delete($path); } /** * Create a hard link to the target file or directory. * * @param string $target * @param string $link * @return void */ public function link($target, $link) { if (! windows_os()) { return symlink($target, $link); } $mode = $this->isDirectory($target) ? 'J' : 'H'; exec("mklink /{$mode} \"{$link}\" \"{$target}\""); } /** * Determine if the given path is a directory. * * @param string $directory * @return bool */ public function isDirectory($directory) { return is_dir($directory); } }