Nette\DI\Compiler::processExtensions PHP Метод

processExtensions() публичный Метод

public processExtensions ( )
    public function processExtensions()
    {
        $this->config = Helpers::expand(array_diff_key($this->config, self::$reserved), $this->builder->parameters) + array_intersect_key($this->config, self::$reserved);
        foreach ($first = $this->getExtensions(Extensions\ExtensionsExtension::class) as $name => $extension) {
            $extension->setConfig(isset($this->config[$name]) ? $this->config[$name] : []);
            $extension->loadConfiguration();
        }
        $last = $this->getExtensions(Extensions\InjectExtension::class);
        $this->extensions = array_merge(array_diff_key($this->extensions, $last), $last);
        $extensions = array_diff_key($this->extensions, $first);
        foreach (array_intersect_key($extensions, $this->config) as $name => $extension) {
            $extension->setConfig($this->config[$name] ?: []);
        }
        foreach ($extensions as $extension) {
            $extension->loadConfiguration();
        }
        if ($extra = array_diff_key($this->extensions, $extensions, $first)) {
            $extra = implode("', '", array_keys($extra));
            throw new Nette\DeprecatedException("Extensions '{$extra}' were added while container was being compiled.");
        } elseif ($extra = key(array_diff_key($this->config, self::$reserved, $this->extensions))) {
            $hint = Nette\Utils\ObjectMixin::getSuggestion(array_keys(self::$reserved + $this->extensions), $extra);
            throw new Nette\InvalidStateException("Found section '{$extra}' in configuration, but corresponding extension is missing" . ($hint ? ", did you mean '{$hint}'?" : '.'));
        }
    }