An error occurred while loading the file. Please try again.
-
Youcef Aouad authored6f3e1e31
<?php
/*
* © 2016 IRSTEA
* Guillaume Perréal <guillaume.perreal@irstea.fr>
* Tous droits réservés.
*/
namespace Irstea\PlantUmlBundle\Finder;
use ArrayIterator;
use Irstea\PlantUmlBundle\Model\Filter\DirectoryFilter;
use ReflectionClass;
use Symfony\Component\Config\Definition\Exception\Exception;
use Symfony\Component\Finder\Finder;
use Symfony\Component\Finder\SplFileInfo;
/**
* Description of ClassFinder
*
* @author Guillaume Perréal <guillaume.perreal@irstea.fr>
*/
class ClassFinder implements FinderInterface
{
/**
* @var string[]
*/
private $directories;
/**
*
* @var \ReflectionClass
*/
private $classes = null;
public function __construct($directories)
{
$this->directories = $directories;
}
private function initialize()
{
$files = Finder::create()
->in($this->directories)
->files()
->name('*.php')
->getIterator();
foreach($files as $file)
{
/* @var $file SplFileInfo */
$path = $file->getPathname();
try {
irstea_plantmul_include($path);
} catch(Exception $ex) {
printf("%s: %s (%s)\n", $path, get_class($ex), $ex->getMessage());
}
}
$filter = new DirectoryFilter($this->directories);
$this->classes = [];
foreach(get_declared_classes() as $className) {
$class = new ReflectionClass($className);
if ($filter->accept($class)) {
$this->classes[$className] = $class;
}
}
}
public function getIterator()
71727374757677787980818283
{
if ($this->classes === null) {
$this->initialize();
}
return new ArrayIterator($this->classes);
}
}
function irstea_plantmul_include($filepath)
{
@include_once($filepath);
}