/**
* @param $type
* @param $name
*
* @return PhpFileInfo|null
*/
protected function findDefinitionFileByRegex($type, $name)
{
$namespaceParts = explode('\\', $name);
$definition = sprintf('%s %s[;\\{\\s]', $type, array_pop($namespaceParts));
if (count($namespaceParts) > 0) {
$namespace = sprintf('namespace %s', implode('\\\\', $namespaceParts));
} else {
$namespace = '';
}
$files = new Finder();
$files->name('*.php')->contains(sprintf('/%s.*%s/s', $namespace, $definition))->in($this->sourcePaths);
if (!$namespace) {
$files->notContains('/namespace\\s[^;]+/');
}
$file = current(iterator_to_array($files));
if (!$file instanceof SplFileInfo) {
return;
}
$baseFile = PhpFileInfo::create($file);
return $this->usageParser->parseFile($baseFile);
}