public function export()
{
$files = $phpFiles = $classes = $functions = [];
foreach ($this->dependencies as $dep) {
if (is_string($dep)) {
$files[] = $dep;
} elseif ($dep instanceof ReflectionClass) {
if (empty($classes[$dep->getName()])) {
foreach (PhpReflection::getClassTree($dep) as $item) {
$phpFiles[] = (new ReflectionClass($item))->getFileName();
$classes[$item] = TRUE;
}
}
} elseif ($dep instanceof \ReflectionFunctionAbstract) {
$phpFiles[] = $dep->getFileName();
$functions[] = $dep instanceof ReflectionMethod ? $dep->getDeclaringClass()->getName() . '::' . $dep->getName() : $dep->getName();
} else {
throw new Nette\InvalidStateException('Unexpected dependency ' . gettype($dep));
}
}
$classes = array_keys($classes);
$functions = array_unique($functions, SORT_REGULAR);
$hash = self::calculateHash($classes, $functions);
$files = @array_map('filemtime', array_combine($files, $files));
// @ - file may not exist
$phpFiles = @array_map('filemtime', array_combine($phpFiles, $phpFiles));
// @ - file may not exist
return [self::VERSION, $files, $phpFiles, $classes, $functions, $hash];
}