vd/vendor/dipper/console/src/Filesystem.php
2018-11-05 09:26:30 +08:00

102 lines
2.1 KiB
PHP

<?php
namespace Dipper\Console;
use Illuminate\Filesystem\Filesystem as IlluminateFilesystem;
/**
* @author HollyTeng <n.haoyuan@gmail.com>
* @author HollyTeng <n.haoyuan@gmail.com>
*/
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);
}
}