/** * @param string $name * @param string $serviceName * @param string $methodName * @param string $shortDesc * @param array $paramsMethod */ public function addCommand($name, $serviceName, $methodName, $shortDesc, $paramsMethod) { $serviceCallable = $this->serviceContainer->getServiceByName($serviceName); $command = new ServiceCommand($name, $shortDesc, $paramsMethod, array($serviceCallable, $methodName)); $command->setInvoker($this->invoker); $this->add($command); }
/** * Warm up the service container by loading all it's service and dispatch * a event so a hook can be done on it. * * @\Nucleus\IService\CommandLine\Consolable(name="application:warmUp") */ public function warmUp() { $eventDispatcher = $this->serviceContainer->getServiceByName(IEventDispatcherService::NUCLEUS_SERVICE_NAME); foreach ($this->serviceContainer->getServiceNames() as $name) { $service = $this->serviceContainer->getServiceByName($name); $eventDispatcher->dispatch('Service.' . strtolower($name) . '.warmUp', $service); } $eventDispatcher->dispatch('ServiceContainer.warmUp', $this->serviceContainer); }
/** * @param \Nucleus\Routing\Router $routing * * @\Nucleus\IService\DependencyInjection\Inject */ public function initialize(IServiceContainer $serviceContainer, IInvokerService $invoker, Router $routing) { $this->serviceContainer = $serviceContainer; $this->invoker = $invoker; $this->routing = $routing; $this->accessControl = $serviceContainer->get('accessControl'); $this->builder = $serviceContainer->get('dashboardDefinitionBuilder'); foreach ($this->initializeServices as $serviceName) { $this->addServiceAsController($serviceName); } }
/** * * @param string $task Task name * @return IMigrationTask of migration task to be executed */ private function loadTask($task) { $taskName = $task['taskName']; try { $migrationTask = $this->serviceContainer->getServiceByName('migrationTask.' . $taskName); if (!$migrationTask instanceof IMigrationTask) { throw new RuntimeException('The task [' . $taskName . '] does not implement the [\\Nucleus\\IService\\Migration\\IMigrationTask] interface'); } $parameters = array(); if (isset($task['parameters'])) { $parameters = $task['parameters']; } $migrationTask->prepare($parameters); return $migrationTask; } catch (ServiceDoesNotExistsException $e) { throw new MigrationTaskNotFoundException("MigrationTask [" . $taskName . "] not found", null, $e); } }
/** * * @param type $serviceName * @param type $methodName * @param Request $request * * @return Response */ public function execute($serviceName, $methodName, Request $request, Response $response = null) { $this->routing->setCurrentRequest($request); if (is_null($response)) { $response = new Response(); } $this->eventDispatcher->dispatch('FrontController.preExecute', $this, compact('serviceName', 'methodName', 'response', 'request')); $parameters = array_merge($request->query->all(), $request->request->all()); $service = $this->serviceContainer->getServiceByName($serviceName); try { $executionResult = $this->invoker->invoke(array($service, $methodName), $parameters, array($request, $response)); } catch (Exception $e) { $executionResult = $this->frontControllerExceptionHandler->handleException($e, $request, $response); } $finalResponse = $this->completeResponse($executionResult, $request, $response); $finalResponse->prepare($request); $this->eventDispatcher->dispatch("Response.beforeSend", $finalResponse); return $finalResponse; }
private function getRule($ruleName, $context, ArrayObject $parameters) { $ruleContext = null; if (strpos($ruleName, '\\') !== false) { list($ruleContext, $ruleName) = explode('\\', $ruleName); } if (is_null($ruleContext)) { $ruleContext = $context; if (!isset($this->rulesObject[$ruleContext . '\\' . $ruleName])) { if (!isset($this->rules[$ruleContext . '\\' . $ruleName])) { $defaultRuleConfiguration = $this->getDefaultRuleName($context); if ($defaultRuleConfiguration['parameter']) { $parameters[$defaultRuleConfiguration['parameter']] = $ruleName; } $ruleName = $defaultRuleConfiguration['rule']; } } } if (!isset($this->rulesObject[$ruleContext . '\\' . $ruleName])) { $serviceName = $this->rules[$ruleContext . '\\' . $ruleName]; $this->rulesObject[$ruleContext . '\\' . $ruleName] = $this->serviceContainer->getServiceByName($serviceName); } return $this->rulesObject[$ruleContext . '\\' . $ruleName]; }