jingcai-php/vendor/hanneskod/classtools/src/Iterator/SplFileInfo.php

381 lines
7.9 KiB
PHP
Executable File

<?php
/**
* This program is free software. It comes without any warranty, to
* the extent permitted by applicable law. You can redistribute it
* and/or modify it under the terms of the Do What The Fuck You Want
* To Public License, Version 2, as published by Sam Hocevar. See
* http://www.wtfpl.net/ for more details.
*/
namespace hanneskod\classtools\Iterator;
use Symfony\Component\Finder\SplFileInfo as FinderSplFileInfo;
use hanneskod\classtools\Transformer\Reader;
use hanneskod\classtools\Exception\ReaderException;
/**
* Decorates \Symfony\Component\Finder\SplFileInfo to support the creation of Readers
*
* @author Hannes Forsgård <hannes.forsgard@fripost.org>
*/
class SplFileInfo extends FinderSplFileInfo
{
/**
* @var FinderSplFileInfo Decorated object
*/
private $decorated;
/**
* @var Reader Cached reader
*/
private $reader;
/**
* Load decorated object
*
* @param FinderSplFileInfo $decorated
*/
public function __construct(FinderSplFileInfo $decorated)
{
$this->decorated = $decorated;
}
/**
* Get reader for the contents of this file
*
* @return Reader
* @throws ReaderException If file contains syntax errors
*/
public function getReader()
{
if (!isset($this->reader)) {
try {
$this->reader = new Reader($this->getContents());
} catch (ReaderException $exception) {
throw new ReaderException($exception->getMessage() . ' in ' . $this->getPathname());
}
}
return $this->reader;
}
/**
* Returns the relative path
*
* @return string
*/
public function getRelativePath()
{
return $this->decorated->getRelativePath();
}
/**
* Returns the relative path name
*
* @return string
*/
public function getRelativePathname()
{
return $this->decorated->getRelativePathname();
}
/**
* Returns the contents of the file
*
* @return string
* @throws \RuntimeException
*/
public function getContents()
{
return (string)$this->decorated->getContents();
}
/**
* Gets the last access time for the file
*
* @return int
*/
public function getATime()
{
return $this->decorated->getATime();
}
/**
* Returns the base name of the file, directory, or link without path info
*
* @param string $suffix
* @return string
*/
public function getBasename($suffix = '')
{
return $this->decorated->getBasename($suffix);
}
/**
* Returns the inode change time for the file
*
* @return int
*/
public function getCTime()
{
return $this->decorated->getCTime();
}
/**
* Retrieves the file extension
*
* @return string
*/
public function getExtension()
{
return $this->decorated->getExtension();
}
/**
* Gets an SplFileInfo object for the referenced file
*
* @param string $class_name
* @return \SplFileInfo
*/
public function getFileInfo($class_name = '')
{
return $this->decorated->getFileInfo($class_name);
}
/**
* Gets the filename without any path information
*
* @return string
*/
public function getFilename()
{
return $this->decorated->getFilename();
}
/**
* Gets the file group
*
* @return int
*/
public function getGroup()
{
return $this->decorated->getGroup();
}
/**
* Gets the inode number for the filesystem object
*
* @return int
*/
public function getInode()
{
return $this->decorated->getInode();
}
/**
* Gets the target of a filesystem link
*
* @return string
*/
public function getLinkTarget()
{
return $this->decorated->getLinkTarget();
}
/**
* Returns the time when the contents of the file were changed
*
* @return int
*/
public function getMTime()
{
return $this->decorated->getMTime();
}
/**
* Gets the file owner
*
* @return int
*/
public function getOwner()
{
return $this->decorated->getOwner();
}
/**
* Returns the path to the file, omitting the filename and any trailing slash
*
* @return string
*/
public function getPath()
{
return $this->decorated->getPath();
}
/**
* Gets an SplFileInfo object for the parent of the current file
*
* @param string $class_name
* @return \SplFileInfo
*/
public function getPathInfo($class_name = '')
{
return $this->decorated->getPathInfo($class_name);
}
/**
* Returns the path to the file
*
* @return string
*/
public function getPathname()
{
return $this->decorated->getPathname();
}
/**
* Gets the file permissions for the file
*
* @return int
*/
public function getPerms()
{
return $this->decorated->getPerms();
}
/**
* Expands all symbolic links and resolves relative references
*
* @return string
*/
public function getRealPath()
{
return $this->decorated->getRealPath();
}
/**
* Returns the filesize in bytes for the file referenced
*
* @return int
*/
public function getSize()
{
return $this->decorated->getSize();
}
/**
* Returns the type of the file referenced
*
* @return string
*/
public function getType()
{
return $this->decorated->getType();
}
/**
* This method can be used to determine if the file is a directory
*
* @return boolean
*/
public function isDir()
{
return $this->decorated->isDir();
}
/**
* Checks if the file is executable
*
* @return boolean
*/
public function isExecutable()
{
return $this->decorated->isExecutable();
}
/**
* Checks if the file referenced exists and is a regular file
*
* @return boolean
*/
public function isFile()
{
return $this->decorated->isFile();
}
/**
* Check if the file referenced is a link
*
* @return boolean
*/
public function isLink()
{
return $this->decorated->isLink();
}
/**
* Check if the file is readable
*
* @return boolean
*/
public function isReadable()
{
return $this->decorated->isReadable();
}
/**
* Check if the file is writable
*
* @return boolean
*/
public function isWritable()
{
return $this->decorated->isWritable();
}
/**
* Creates an SplFileObject object of the file
*
* @param string $open_mode
* @param boolean $use_include_path
* @param resource $context
* @return \SplFileObject
*/
public function openFile($open_mode = "r", $use_include_path = false, $context = null)
{
return $this->decorated->openFile($open_mode, $use_include_path, $context);
}
/**
* Set the class name which will be used to open files when openFile() is called
*
* @param string $class_name
* @return void
*/
public function setFileClass($class_name = '')
{
$this->decorated->setFileClass($class_name);
}
/**
* Set the class name which will be used when getFileInfo and getPathInfo are called
*
* @param string $class_name
* @return void
*/
public function setInfoClass($class_name = '')
{
$this->decorated->setInfoClass($class_name);
}
/**
* This method will return the file name of the referenced file
*
* @return string
*/
public function __tostring()
{
return (string)$this->decorated;
}
}