public function loadConfig(IContext $context, $config) { foreach ($config as $serviceName => $serviceConfig) { if ($context->hasService($serviceName)) { $context->removeService($serviceName); } $options = null; $singleton = isset($serviceConfig["singleton"]) ? (bool) $serviceConfig["singleton"] : true; if (isset($serviceConfig["arguments"]) || isset($serviceConfig["callMethods"])) { $service = array($this, "universalFactory"); if (isset($serviceConfig["class"])) { $options["class"] = $serviceConfig["class"]; } if (isset($serviceConfig["factory"])) { $options["factory"] = $serviceConfig["factory"]; } if (isset($serviceConfig["arguments"])) { $options["arguments"] = $serviceConfig["arguments"]; } if (isset($serviceConfig["callMethods"])) { $options["callMethods"] = $serviceConfig["callMethods"]; } $options["context"] = $context; } elseif (isset($serviceConfig["factory"])) { $service = $serviceConfig["factory"]; } elseif (isset($serviceConfig["class"])) { $service = $serviceConfig["class"]; } $context->addService($serviceName, $service, $singleton, $options); } }
/** * Changes router. * @param IRouter * @return Application provides a fluent interface */ public function setRouter(IRouter $router) { $this->context->addService('Nette\\Application\\IRouter', $router); return $this; }