Beispiel #1
0
 /**
  * @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);
 }
Beispiel #3
0
 /**
  * @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);
     }
 }
Beispiel #4
0
 /**
  * 
  * @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);
     }
 }
Beispiel #5
0
 /**
  * 
  * @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];
 }