Current Directory: /home/astoriaah/www/templates/yootheme-BK/vendor/yootheme/framework/src/Util
Viewing File: /home/astoriaah/www/templates/yootheme-BK/vendor/yootheme/framework/src/Util/File.php
<?php
namespace YOOtheme\Util;
class File
{
use MethodTrait;
/**
* @var string
*/
protected $file;
/**
* @var FileLocator
*/
protected static $locator;
/**
* Constructor.
*
* @param string $file
*/
public function __construct($file)
{
if (static::isRelative($file)) {
$file = static::find($file) ?: $file;
}
$this->file = strtr($file, '\\', '/');
}
/**
* Gets the base name.
*
* @return string
*/
public function getBasename()
{
return pathinfo($this->file, PATHINFO_FILENAME);
}
/**
* Gets the filename.
*
* @return string
*/
public function getFilename()
{
return pathinfo($this->file, PATHINFO_BASENAME);
}
/**
* Gets the path without filename.
*
* @param string $path
* @return string
*/
public function getPath($path = null)
{
if ($path) {
$path = '/'.ltrim($path, '\/');
}
if ($this->isDir()) {
return $this->file.$path;
}
return pathinfo($this->file, PATHINFO_DIRNAME).$path;
}
/**
* Gets the path to the file.
*
* @return string
*/
public function getPathname()
{
return $this->file;
}
/**
* Gets the file extension.
*
* @return string
*/
public function getExtension()
{
return pathinfo($this->file, PATHINFO_EXTENSION);
}
/**
* Gets the last access time.
*
* @return int
*/
public function getATime()
{
return fileatime($this->file);
}
/**
* Gets the inode change time.
*
* @return int
*/
public function getCTime()
{
return filectime($this->file);
}
/**
* Gets the last modified time.
*
* @return int
*/
public function getMTime()
{
return filemtime($this->file);
}
/**
* Gets the file size.
*
* @return string
*/
public function getSize()
{
return @filesize($this->file);
}
/**
* Gets the contents form file.
*
* @return string
*/
public function getContents()
{
return @file_get_contents($this->file);
}
/**
* Writes the contents to file.
*
* @param string $contents
* @param int $flags
* @return int
*/
public function putContents($contents, $flags = 0)
{
if (!is_dir($path = $this->getPath())) {
@mkdir($path, 0777, true);
}
return @file_put_contents($this->file, $contents, $flags);
}
/**
* Checks if the file exists.
*
* @return boolean
*/
public function exists()
{
return @file_exists($this->file);
}
/**
* Checks if the file is a file.
*
* @return boolean
*/
public function isFile()
{
return is_file($this->file);
}
/**
* Checks if the file is a link.
*
* @return boolean
*/
public function isLink()
{
return is_link($this->file);
}
/**
* Checks if the file is a directory.
*
* @return boolean
*/
public function isDir()
{
return is_dir($this->file);
}
/**
* Gets the path to the file.
*
* @return string
*/
public function __toString()
{
return $this->file;
}
/**
* Finds the first matched file.
*
* @param string $name
* @return string|false
*/
public static function find($name)
{
return static::getLocator()->find($name);
}
/**
* Finds all matching files.
*
* @param string $name
* @return array
*/
public static function findAll($name)
{
return static::getLocator()->findAll($name);
}
/**
* Gets the file locator.
*
* @return FileLocator
*/
public static function getLocator()
{
return static::$locator ?: static::$locator = new FileLocator();
}
/**
* Checks if the file is a relative path.
*
* @param string $file
* @return bool
*/
public static function isRelative($file)
{
return !static::isAbsolute($file);
}
/**
* Checks if the file is an absolute path.
*
* @param string $file
* @return boolean
*/
public static function isAbsolute($file)
{
return ($file && $file[0] == '/') || (strpos($file, ':') && preg_match('#^[a-z](:(/|\\\)|[a-z]*://)#i', $file));
}
/**
* Normalizes a file path.
*
* @param string $path
* @return string
*/
public static function normalizePath($path)
{
$parts = [];
foreach (explode('/', strtr($path, '\\', '/')) as $part) {
if ($part == '.') {
continue;
} else if ($part == '..') {
array_pop($parts);
} else {
$parts[] = $part;
}
}
return implode('/', $parts);
}
}