Prado\TApplication::applyConfiguration PHP Метод

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

Applies an application configuration.
public applyConfiguration ( $config, $withinService = false )
    public function applyConfiguration($config, $withinService = false)
    {
        if ($config->getIsEmpty()) {
            return;
        }
        // set path aliases and using namespaces
        foreach ($config->getAliases() as $alias => $path) {
            Prado::setPathOfAlias($alias, $path);
        }
        foreach ($config->getUsings() as $using) {
            Prado::using($using);
        }
        // set application properties
        if (!$withinService) {
            foreach ($config->getProperties() as $name => $value) {
                $this->setSubProperty($name, $value);
            }
        }
        if (empty($this->_services)) {
            $this->_services = array($this->getPageServiceID() => array('Prado\\Web\\Services\\TPageService', array(), null));
        }
        // load parameters
        foreach ($config->getParameters() as $id => $parameter) {
            if (is_array($parameter)) {
                $component = Prado::createComponent($parameter[0]);
                foreach ($parameter[1] as $name => $value) {
                    $component->setSubProperty($name, $value);
                }
                $this->_parameters->add($id, $component);
            } else {
                $this->_parameters->add($id, $parameter);
            }
        }
        // load and init modules specified in app config
        $modules = array();
        foreach ($config->getModules() as $id => $moduleConfig) {
            if (!is_string($id)) {
                $id = '_module' . count($this->_lazyModules);
            }
            $this->_lazyModules[$id] = $moduleConfig;
            if ($module = $this->internalLoadModule($id)) {
                $modules[] = $module;
            }
        }
        foreach ($modules as $module) {
            $module[0]->init($module[1]);
        }
        // load service
        foreach ($config->getServices() as $serviceID => $serviceConfig) {
            $this->_services[$serviceID] = $serviceConfig;
        }
        // external configurations
        foreach ($config->getExternalConfigurations() as $filePath => $condition) {
            if ($condition !== true) {
                $condition = $this->evaluateExpression($condition);
            }
            if ($condition) {
                if (($path = Prado::getPathOfNamespace($filePath, $this->getConfigurationFileExt())) === null || !is_file($path)) {
                    throw new TConfigurationException('application_includefile_invalid', $filePath);
                }
                $cn = $this->getApplicationConfigurationClass();
                $c = new $cn();
                $c->loadFromFile($path);
                $this->applyConfiguration($c, $withinService);
            }
        }
    }