private function updateFile($file)
{
foreach ($this->classes as $class => $info) {
if (isset($info['file']) && $info['file'] === $file) {
unset($this->classes[$class]);
}
}
if (is_file($file)) {
foreach ($this->scanPhp(file_get_contents($file)) as $class) {
$info =& $this->classes[strtolower($class)];
if (isset($info['file']) && @filemtime($info['file']) !== $info['time']) {
// @ file may not exists
$this->updateFile($info['file']);
$info =& $this->classes[strtolower($class)];
}
if (isset($info['file'])) {
throw new Nette\InvalidStateException("Ambiguous class {$class} resolution; defined in {$info['file']} and in {$file}.");
}
$info = ['file' => $file, 'time' => filemtime($file), 'orig' => $class];
}
}
}