<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2014 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 array|null $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();
}
}
# |
Change |
User |
Description |
Committed |
|
#1
|
18334 |
Liz Lam |
initial add of jambox |
|
|