Nette\DI\DependencyChecker::export PHP Method

export() public method

Exports dependencies.
public export ( ) : array
return array
    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];
    }

Usage Example

Example #1
0
 /**
  * Exports dependencies.
  * @return array
  */
 public function exportDependencies()
 {
     return $this->dependencies->export();
 }