mirror of
https://github.com/torrentpier/torrentpier-lts.git
synced 2025-02-28 15:10:54 +03:00
161 lines
3.4 KiB
PHP
161 lines
3.4 KiB
PHP
<?php
|
|
/**
|
|
* Zend Framework (http://framework.zend.com/)
|
|
*
|
|
* @link http://github.com/zendframework/zf2 for the canonical source repository
|
|
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
|
* @license http://framework.zend.com/license/new-bsd New BSD License
|
|
*/
|
|
|
|
namespace Zend\Code\Scanner;
|
|
|
|
use Zend\Code\Annotation\AnnotationManager;
|
|
use Zend\Code\Exception;
|
|
use Zend\Code\NameInformation;
|
|
|
|
class CachingFileScanner extends FileScanner
|
|
{
|
|
/**
|
|
* @var array
|
|
*/
|
|
protected static $cache = array();
|
|
|
|
/**
|
|
* @var null|FileScanner
|
|
*/
|
|
protected $fileScanner = null;
|
|
|
|
/**
|
|
* @param string $file
|
|
* @param AnnotationManager $annotationManager
|
|
* @throws Exception\InvalidArgumentException
|
|
*/
|
|
public function __construct($file, AnnotationManager $annotationManager = null)
|
|
{
|
|
if (!file_exists($file)) {
|
|
throw new Exception\InvalidArgumentException(sprintf(
|
|
'File "%s" not found',
|
|
$file
|
|
));
|
|
}
|
|
|
|
$file = realpath($file);
|
|
|
|
$cacheId = md5($file) . '/' . ((isset($annotationManager) ? spl_object_hash($annotationManager) : 'no-annotation'));
|
|
|
|
if (isset(static::$cache[$cacheId])) {
|
|
$this->fileScanner = static::$cache[$cacheId];
|
|
} else {
|
|
$this->fileScanner = new FileScanner($file, $annotationManager);
|
|
static::$cache[$cacheId] = $this->fileScanner;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return void
|
|
*/
|
|
public static function clearCache()
|
|
{
|
|
static::$cache = array();
|
|
}
|
|
|
|
/**
|
|
* @return AnnotationManager
|
|
*/
|
|
public function getAnnotationManager()
|
|
{
|
|
return $this->fileScanner->getAnnotationManager();
|
|
}
|
|
|
|
/**
|
|
* @return array|null|string
|
|
*/
|
|
public function getFile()
|
|
{
|
|
return $this->fileScanner->getFile();
|
|
}
|
|
|
|
/**
|
|
* @return null|string
|
|
*/
|
|
public function getDocComment()
|
|
{
|
|
return $this->fileScanner->getDocComment();
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function getNamespaces()
|
|
{
|
|
return $this->fileScanner->getNamespaces();
|
|
}
|
|
|
|
/**
|
|
* @param null|string $namespace
|
|
* @return array|null
|
|
*/
|
|
public function getUses($namespace = null)
|
|
{
|
|
return $this->fileScanner->getUses($namespace);
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function getIncludes()
|
|
{
|
|
return $this->fileScanner->getIncludes();
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function getClassNames()
|
|
{
|
|
return $this->fileScanner->getClassNames();
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function getClasses()
|
|
{
|
|
return $this->fileScanner->getClasses();
|
|
}
|
|
|
|
/**
|
|
* @param int|string $className
|
|
* @return ClassScanner
|
|
*/
|
|
public function getClass($className)
|
|
{
|
|
return $this->fileScanner->getClass($className);
|
|
}
|
|
|
|
/**
|
|
* @param string $className
|
|
* @return bool|null|NameInformation
|
|
*/
|
|
public function getClassNameInformation($className)
|
|
{
|
|
return $this->fileScanner->getClassNameInformation($className);
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function getFunctionNames()
|
|
{
|
|
return $this->fileScanner->getFunctionNames();
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function getFunctions()
|
|
{
|
|
return $this->fileScanner->getFunctions();
|
|
}
|
|
}
|