Commit 621c8eda authored by Tino Goratsch's avatar Tino Goratsch

- renamed the ControllerResolver to ControllerActionDispatcher and refactored it

- further refactoring of the ACP3 Request class to use the Symfony Request class some more
- refactored the service definitions of the installer into separate yml files
parent 1783e05c
......@@ -12,7 +12,7 @@ use Patchwork\Utf8;
use Symfony\Component\Config\ConfigCache;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\Dumper\PhpDumper;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Request as SymfonyRequest;
use Symfony\Component\HttpFoundation\Response;
/**
......@@ -29,7 +29,7 @@ class Bootstrap extends AbstractBootstrap
/**
* @inheritdoc
*/
public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true)
public function handle(SymfonyRequest $request, $type = self::MASTER_REQUEST, $catch = true)
{
$this->setErrorHandler();
$this->initializeClasses($request);
......@@ -57,14 +57,9 @@ class Bootstrap extends AbstractBootstrap
*/
private function maintenanceModeIsEnabled(RequestInterface $request)
{
if ((bool)$this->systemSettings['maintenance_mode'] === true &&
$request->getArea() !== AreaEnum::AREA_ADMIN &&
strpos($request->getQuery(), 'users/index/login/') !== 0
) {
return true;
}
return false;
return (bool)$this->systemSettings['maintenance_mode'] === true &&
$request->getArea() !== AreaEnum::AREA_ADMIN &&
strpos($request->getQuery(), 'users/index/login/') !== 0;
}
/**
......@@ -85,7 +80,7 @@ class Bootstrap extends AbstractBootstrap
/**
* @inheritdoc
*/
public function initializeClasses(Request $symfonySymfonyRequest)
public function initializeClasses(SymfonyRequest $symfonySymfonyRequest)
{
Utf8\Bootup::initAll(); // Enables the portability layer and configures PHP for UTF-8
Utf8\Bootup::filterRequestUri(); // Redirects to an UTF-8 encoded URL if it's not already the case
......@@ -136,7 +131,7 @@ class Bootstrap extends AbstractBootstrap
$redirect = $this->container->get('core.http.redirect_response');
try {
$response = $this->container->get('core.application.controller_resolver')->dispatch();
$response = $this->container->get('core.application.controller_action_dispatcher')->dispatch();
} catch (\ACP3\Core\Controller\Exception\ResultNotExistsException $e) {
$response = $redirect->temporary('errors/index/not_found');
} catch (\ACP3\Core\Authentication\Exception\UnauthorizedAccessException $e) {
......@@ -193,10 +188,10 @@ class Bootstrap extends AbstractBootstrap
}
/**
* @param Request $symfonyRequest
* @param string $file
* @param SymfonyRequest $symfonyRequest
* @param $file
*/
protected function dumpContainer(Request $symfonyRequest, $file)
protected function dumpContainer(SymfonyRequest $symfonyRequest, $file)
{
$containerConfigCache = new ConfigCache($file, ($this->appMode === ApplicationMode::DEVELOPMENT));
......
<?php
namespace ACP3\Core\Application;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Request as SymfonyRequest;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\HttpKernelInterface;
......@@ -23,10 +23,10 @@ interface BootstrapInterface extends HttpKernelInterface
/**
* Initializes the dependency injection container
* @param Request $symfonyRequest
* @param SymfonyRequest $symfonyRequest
* @return void
*/
public function initializeClasses(Request $symfonyRequest);
public function initializeClasses(SymfonyRequest $symfonyRequest);
/**
* Handle the request and output the page
......
......@@ -6,19 +6,19 @@
namespace ACP3\Core\Application;
use ACP3\Core\Application\Event\FrontControllerDispatchEvent;
use ACP3\Core\Application\Event\ControllerActionDispatcherDispatchEvent;
use ACP3\Core\Controller\ActionInterface;
use ACP3\Core\Controller\Exception\ResultNotExistsException;
use ACP3\Core\Http\RequestInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface;
/**
* Class ControllerResolver
* Class ControllerActionDispatcher
* @package ACP3\Core\Application
*/
class ControllerResolver
class ControllerActionDispatcher
{
/**
* @var \Symfony\Component\EventDispatcher\EventDispatcherInterface
......@@ -32,25 +32,32 @@ class ControllerResolver
* @var \Symfony\Component\DependencyInjection\ContainerInterface
*/
protected $container;
/**
* @var ArgumentResolverInterface
*/
protected $argumentResolver;
/**
* @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $eventDispatcher
* @param \ACP3\Core\Http\RequestInterface $request
* @param \Symfony\Component\DependencyInjection\ContainerInterface $container
* @param \ACP3\Core\Http\RequestInterface $request
* @param \Symfony\Component\DependencyInjection\ContainerInterface $container
* @param ArgumentResolverInterface $argumentResolver
*/
public function __construct(
EventDispatcherInterface $eventDispatcher,
RequestInterface $request,
ContainerInterface $container
ContainerInterface $container,
ArgumentResolverInterface $argumentResolver
) {
$this->eventDispatcher = $eventDispatcher;
$this->request = $request;
$this->container = $container;
$this->argumentResolver = $argumentResolver;
}
/**
* @param string $serviceId
* @param array $arguments
* @param array $arguments
* @return Response|string
*
* @throws \ACP3\Core\Controller\Exception\ControllerActionNotFoundException
......@@ -64,8 +71,8 @@ class ControllerResolver
if ($this->container->has($serviceId)) {
$this->eventDispatcher->dispatch(
'core.application.controller_resolver.before_dispatch',
new FrontControllerDispatchEvent($serviceId)
'core.application.controller_action_dispatcher.before_dispatch',
new ControllerActionDispatcherDispatchEvent($serviceId)
);
/** @var \ACP3\Core\Controller\ActionInterface $controller */
......@@ -74,8 +81,8 @@ class ControllerResolver
$response = $controller->display($this->executeControllerAction($controller, $arguments));
$this->eventDispatcher->dispatch(
'core.application.controller_resolver.after_dispatch',
new FrontControllerDispatchEvent($serviceId)
'core.application.controller_action_dispatcher.after_dispatch',
new ControllerActionDispatcherDispatchEvent($serviceId)
);
return $response;
......@@ -88,45 +95,20 @@ class ControllerResolver
/**
* @param \ACP3\Core\Controller\ActionInterface $controller
* @param array $arguments
* @param array $arguments
*
* @return mixed
* @throws \ACP3\Core\Controller\Exception\ResultNotExistsException
*/
private function executeControllerAction(ActionInterface $controller, array $arguments)
{
$reflection = new \ReflectionMethod($controller, 'execute');
$parameterCount = $reflection->getNumberOfParameters();
if ($parameterCount > 0 && empty($arguments)) {
$arguments = $this->fetchControllerActionArguments($reflection);
$callable = [$controller, 'execute'];
if ($reflection->getNumberOfRequiredParameters() > count($arguments)) {
throw new ResultNotExistsException();
}
if (empty($arguments)) {
$arguments = $this->argumentResolver->getArguments($this->request->getSymfonyRequest(), $callable);
}
return call_user_func_array([$controller, 'execute'], $arguments);
}
/**
* @param \ReflectionMethod $reflection
*
* @return array
*/
private function fetchControllerActionArguments(\ReflectionMethod $reflection)
{
$arguments = [];
foreach ($reflection->getParameters() as $parameter) {
if ($this->request->getPost()->has($parameter->getName())) {
$arguments[$parameter->getPosition()] = $this->request->getPost()->get($parameter->getName());
} elseif ($this->request->getParameters()->has($parameter->getName())) {
$arguments[$parameter->getPosition()] = $this->request->getParameters()->get($parameter->getName());
} elseif ($parameter->isOptional()) {
$arguments[$parameter->getPosition()] = $parameter->getDefaultValue();
}
}
return $arguments;
return call_user_func_array($callable, $arguments);
}
/**
......@@ -134,6 +116,10 @@ class ControllerResolver
*/
protected function buildControllerServiceId()
{
return $this->request->getModule() . '.controller.' . $this->request->getArea() . '.' . $this->request->getController() . '.' . $this->request->getAction();
return $this->request->getModule()
. '.controller.'
. $this->request->getArea()
. '.' . $this->request->getController()
. '.' . $this->request->getAction();
}
}
......@@ -10,10 +10,10 @@ namespace ACP3\Core\Application\Event;
use Symfony\Component\EventDispatcher\Event;
/**
* Class FrontControllerDispatchEvent
* Class ControllerActionDispatcherDispatchEvent
* @package ACP3\Core\Application\Event
*/
class FrontControllerDispatchEvent extends Event
class ControllerActionDispatcherDispatchEvent extends Event
{
/**
* @var string
......
<?php
namespace ACP3\Core\Http;
use ACP3\Core\Http\Request\CookiesParameterBag;
use ACP3\Core\Http\Request\UserAgent;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Request as SymfonyRequest;
/**
* Class AbstractRequest
......@@ -20,10 +19,6 @@ abstract class AbstractRequest implements RequestInterface
* @var string
*/
protected $homepage = '';
/**
* @var \ACP3\Core\Http\Request\CookiesParameterBag
*/
protected $cookies;
/**
* @var \ACP3\Core\Http\Request\UserAgent
*/
......@@ -31,15 +26,23 @@ abstract class AbstractRequest implements RequestInterface
/**
* AbstractRequest constructor.
* @param Request $symfonyRequest
* @param SymfonyRequest $symfonyRequest
*/
public function __construct(Request $symfonyRequest)
public function __construct(SymfonyRequest $symfonyRequest)
{
$this->symfonyRequest = $symfonyRequest;
$this->fillParameterBags();
}
/**
* @return SymfonyRequest
*/
public function getSymfonyRequest()
{
return $this->symfonyRequest;
}
/**
* Returns the used protocol of the current request
*
......
......@@ -12,26 +12,6 @@ class Request extends AbstractRequest
{
const ADMIN_PANEL_PATTERN = '=^acp/=';
/**
* @var string
*/
protected $area = '';
/**
* @var string
*/
protected $module = '';
/**
* @var string
*/
protected $controller = '';
/**
* @var string
*/
protected $action = '';
/**
* @var \Symfony\Component\HttpFoundation\ParameterBag
*/
protected $parameters;
/**
* @var string
*/
......@@ -72,7 +52,7 @@ class Request extends AbstractRequest
*/
public function getArea()
{
return $this->area;
return $this->symfonyRequest->attributes->get('_area');
}
/**
......@@ -80,7 +60,7 @@ class Request extends AbstractRequest
*/
public function getModule()
{
return $this->module;
return $this->symfonyRequest->attributes->get('_module');
}
/**
......@@ -88,7 +68,7 @@ class Request extends AbstractRequest
*/
public function getController()
{
return $this->controller;
return $this->symfonyRequest->attributes->get('_controller');
}
/**
......@@ -96,7 +76,7 @@ class Request extends AbstractRequest
*/
public function getAction()
{
return $this->action;
return $this->symfonyRequest->attributes->get('_controllerAction');
}
/**
......@@ -104,7 +84,7 @@ class Request extends AbstractRequest
*/
public function getFullPath()
{
return $this->getModuleAndController() . $this->action . '/';
return $this->getModuleAndController() . $this->getAction() . '/';
}
/**
......@@ -112,7 +92,7 @@ class Request extends AbstractRequest
*/
public function getFullPathWithoutArea()
{
return $this->getModuleAndControllerWithoutArea() . $this->action . '/';
return $this->getModuleAndControllerWithoutArea() . $this->getAction() . '/';
}
/**
......@@ -120,7 +100,7 @@ class Request extends AbstractRequest
*/
public function getModuleAndController()
{
$path = ($this->area === AreaEnum::AREA_ADMIN) ? 'acp/' : '';
$path = ($this->getArea() === AreaEnum::AREA_ADMIN) ? 'acp/' : '';
$path .= $this->getModuleAndControllerWithoutArea();
return $path;
......@@ -131,7 +111,7 @@ class Request extends AbstractRequest
*/
public function getModuleAndControllerWithoutArea()
{
return $this->module . '/' . $this->controller . '/';
return $this->getModule() . '/' . $this->getController() . '/';
}
/**
......@@ -145,11 +125,11 @@ class Request extends AbstractRequest
// It's an request for the admin panel page
if (preg_match(self::ADMIN_PANEL_PATTERN, $this->query)) {
$this->area = AreaEnum::AREA_ADMIN;
$this->symfonyRequest->attributes->set('_area', AreaEnum::AREA_ADMIN);
// strip "acp/"
$this->query = substr($this->query, 4);
} else {
$this->area = AreaEnum::AREA_FRONTEND;
$this->symfonyRequest->attributes->set('_area', AreaEnum::AREA_FRONTEND);
// Set the user defined homepage of the website
if ($this->query === '/' && $this->homepage !== '') {
......@@ -168,13 +148,22 @@ class Request extends AbstractRequest
$query = preg_split('=/=', $this->query, -1, PREG_SPLIT_NO_EMPTY);
if (isset($query[0])) {
$this->module = $query[0];
$this->symfonyRequest->attributes->set('_module', $query[0]);
} else {
$this->module = ($this->area === AreaEnum::AREA_ADMIN) ? 'acp' : 'news';
$this->symfonyRequest->attributes->set(
'_module',
($this->getArea() === AreaEnum::AREA_ADMIN) ? 'acp' : 'news'
);
}
$this->controller = isset($query[1]) ? $query[1] : 'index';
$this->action = isset($query[2]) ? $query[2] : 'index';
$this->symfonyRequest->attributes->set(
'_controller',
isset($query[1]) ? $query[1] : 'index'
);
$this->symfonyRequest->attributes->set(
'_controllerAction',
isset($query[2]) ? $query[2] : 'index'
);
$this->completeQuery($query);
$this->setRequestParameters($query);
......@@ -193,7 +182,7 @@ class Request extends AbstractRequest
*/
public function getParameters()
{
return $this->parameters;
return $this->symfonyRequest->attributes;
}
/**
......@@ -215,25 +204,29 @@ class Request extends AbstractRequest
*/
protected function setRequestParameters(array $query)
{
$this->parameters = new \Symfony\Component\HttpFoundation\ParameterBag([]);
if (isset($query[3])) {
$cQuery = count($query);
for ($i = 3; $i < $cQuery; ++$i) {
if (preg_match('/^(page_(\d+))$/', $query[$i])) { // Current page
$this->parameters->add(['page' => (int)substr($query[$i], 5)]);
$this->symfonyRequest->attributes->add(['page' => (int)substr($query[$i], 5)]);
} elseif (preg_match('/^(id_(\d+))$/', $query[$i])) { // result ID
$this->parameters->add(['id' => (int)substr($query[$i], 3)]);
$this->symfonyRequest->attributes->add(['id' => (int)substr($query[$i], 3)]);
} elseif (preg_match('/^(([a-z0-9-]+)_(.+))$/', $query[$i])) { // Additional URI parameters
$param = explode('_', $query[$i], 2);
$this->parameters->add([$param[0] => $param[1]]);
$this->symfonyRequest->attributes->add([$param[0] => $param[1]]);
}
}
}
$this->parameters->set('cat', (int)$this->getPost()->get('cat', $this->parameters->get('cat')));
$this->parameters->set('action', $this->getPost()->get('action', $this->parameters->get('action')));
$this->symfonyRequest->attributes->set(
'cat',
(int)$this->getPost()->get('cat', $this->symfonyRequest->attributes->get('cat'))
);
$this->symfonyRequest->attributes->set(
'action',
$this->getPost()->get('action', $this->symfonyRequest->attributes->get('action'))
);
}
/**
......@@ -242,13 +235,13 @@ class Request extends AbstractRequest
protected function completeQuery(array $query)
{
if (!isset($query[0])) {
$this->query = $this->module . '/';
$this->query = $this->getModule() . '/';
}
if (!isset($query[1])) {
$this->query .= $this->controller . '/';
$this->query .= $this->getController() . '/';
}
if (!isset($query[2])) {
$this->query .= $this->action . '/';
$this->query .= $this->getAction() . '/';
}
}
}
<?php
namespace ACP3\Core\Http;
use Symfony\Component\HttpFoundation\Request as SymfonyRequest;
/**
* Interface RequestInterface
* @package ACP3\Core\Http
*/
interface RequestInterface
{
/**
* @return SymfonyRequest
*/
public function getSymfonyRequest();
/**
* Returns the used protocol of the current request
*
......
......@@ -2,7 +2,8 @@
namespace ACP3\Core\View\Renderer\Smarty\Functions;
use ACP3\Core\ACL;
use ACP3\Core\Application\ControllerResolver;
use ACP3\Core\Application\ControllerActionDispatcher;
use Symfony\Component\HttpFoundation\Response;
/**
* Class LoadModule
......@@ -15,20 +16,20 @@ class LoadModule extends AbstractFunction
*/
protected $acl;
/**
* @var \ACP3\Core\Application\ControllerResolver
* @var \ACP3\Core\Application\ControllerActionDispatcher
*/
protected $frontController;
protected $controllerActionDispatcher;
/**
* LoadModule constructor.
*
* @param \ACP3\Core\ACL $acl
* @param \ACP3\Core\Application\ControllerResolver $frontController
* @param \ACP3\Core\Application\ControllerActionDispatcher $controllerActionDispatcher
*/
public function __construct(ACL $acl, ControllerResolver $frontController)
public function __construct(ACL $acl, ControllerActionDispatcher $controllerActionDispatcher)
{
$this->acl = $acl;
$this->frontController = $frontController;
$this->controllerActionDispatcher = $controllerActionDispatcher;
}
/**
......@@ -44,15 +45,22 @@ class LoadModule extends AbstractFunction
*/
public function process(array $params, \Smarty_Internal_Template $smarty)
{
$response = '';
$pathArray = $this->convertPathToArray($params['module']);
$path = $pathArray[0] . '/' . $pathArray[1] . '/' . $pathArray[2] . '/' . $pathArray[3];
if ($this->acl->hasPermission($path) === true) {
$serviceId = strtolower($pathArray[1] . '.controller.' . $pathArray[0] . '.' . $pathArray[2] . '.' . $pathArray[3]);
return $this->frontController->dispatch($serviceId, isset($params['args']) ? $params['args'] : []);
$response = $this->controllerActionDispatcher->dispatch(
$serviceId,
isset($params['args']) ? $params['args'] : []
);
if ($response instanceof Response) {
$response = $response->getContent();
}
}
return '';
return $response;
}
/**
......
......@@ -55,7 +55,7 @@ services:
smarty.plugin.load_module:
class: ACP3\Core\View\Renderer\Smarty\Functions\LoadModule
arguments: ['@core.acl', '@core.application.controller_resolver']
arguments: ['@core.acl', '@core.application.controller_action_dispatcher']
tags:
- { name: core.view.extension }
......
services:
core.application.controller_action_dispatcher:
class: ACP3\Core\Application\ControllerActionDispatcher
arguments:
- '@core.eventDispatcher'
- '@core.http.request'
- '@service_container'
- '@core.application.argument_resolver'
core.application.argument_resolver:
class: Symfony\Component\HttpKernel\Controller\ArgumentResolver
imports:
- { resource: cache.yml }
- { resource: ../../config.yml }
- { resource: components/application.yml }
- { resource: components/assets.yml }
- { resource: components/authentication.yml }
- { resource: components/controller.yml }
......@@ -31,13 +32,6 @@ services:
- '@permissions.model.privilegerepository'
- '@permissions.cache'
core.application.controller_resolver:
class: ACP3\Core\Application\ControllerResolver
arguments:
- '@core.eventDispatcher'
- '@core.http.request'
- '@service_container'
core.cache.system:
class: ACP3\Core\Cache
arguments:
......
......@@ -37,7 +37,7 @@ class Request extends \ACP3\Core\Http\Request
protected function parseURI()
{
if ($this->area === AreaEnum::AREA_FRONTEND) {
if ($this->getArea() === AreaEnum::AREA_FRONTEND) {
$this->checkForUriAlias();
}
......
......@@ -7,7 +7,7 @@
namespace ACP3\Modules\ACP3\Seo\Event\Listener;
use ACP3\Core\Application\Event\FrontControllerDispatchEvent;
use ACP3\Core\Application\Event\ControllerActionDispatcherDispatchEvent;
use ACP3\Core\Controller\AreaEnum;
use ACP3\Core\Http\RequestInterface;
use ACP3\Core\RouterInterface;
......@@ -15,10 +15,10 @@ use ACP3\Modules\ACP3\Seo\Core\Router\Aliases;
use ACP3\Modules\ACP3\Seo\Helper\MetaStatements;
/**
* Class OnControllerResolverBeforeDispatchListener
* Class OnControllerActionDispatcherBeforeDispatchListener
* @package ACP3\Modules\ACP3\Seo\Event\Listener
*/
class OnControllerResolverBeforeDispatchListener
class OnControllerActionDispatcherBeforeDispatchListener
{
/**
* @var \ACP3\Core\Http\RequestInterface
......@@ -60,9 +60,9 @@ class OnControllerResolverBeforeDispatchListener
/**
* If there is an URI alias available, set the alias as the canonical URI
*
* @param \ACP3\Core\Application\Event\FrontControllerDispatchEvent $event
* @param \ACP3\Core\Application\Event\ControllerActionDispatcherDispatchEvent $event
*/
public function onFrontControllerBeforeDispatch(FrontControllerDispatchEvent $event)
public function onBeforeDispatch(ControllerActionDispatcherDispatchEvent $event)
{
if ($this->isInFrontend($event) && $this->uriAliasExists()) {
$this->metaStatements->setCanonicalUri($this->router->route($this->request->getQuery()));
......@@ -70,11 +70,11 @@ class OnControllerResolverBeforeDispatchListener
}
/**
* @param \ACP3\Core\Application\Event\FrontControllerDispatchEvent $event
* @param \ACP3\Core\Application\Event\ControllerActionDispatcherDispatchEvent $event
*
* @return bool
*/
private function isInFrontend(FrontControllerDispatchEvent $event)
private function isInFrontend(ControllerActionDispatcherDispatchEvent $event)
{
return $event->getControllerArea() === AreaEnum::AREA_FRONTEND
&& $this->request->getArea() === AreaEnum::AREA_FRONTEND;
......
services:
seo.events.on_controller_resolver_before_dispatch_listener:
class: ACP3\Modules\ACP3\Seo\Event\Listener\OnControllerResolverBeforeDispatchListener
seo.events.on_controller_action_dispatcher_before_dispatch_listener:
class: ACP3\Modules\ACP3\Seo\Event\Listener\OnControllerActionDispatcherBeforeDispatchListener
arguments:
- '@core.http.request'
- '@core.router'
- '@seo.core.router.aliases'
- '@seo.helper.meta_statements'
tags:
- { name: core.eventListener, event: core.application.controller_resolver.before_dispatch, method: onFrontControllerBeforeDispatch }
- { name: core.eventListener, event: core.application.controller_action_dispatcher.before_dispatch, method: onBeforeDispatch }
seo.events.on_custom_template_variable_listener:
class: ACP3\Modules\ACP3\Seo\Event\Listener\OnControllerCustomTemplateVariableListener
......
......@@ -5,7 +5,7 @@ namespace ACP3\Installer\Core\Application;
use ACP3\Core;
use ACP3\Installer\Core\DependencyInjection\ServiceContainerBuilder;
use ACP3\Installer\Core\Environment\ApplicationPath;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Request as SymfonyRequest;
/**
* Class Bootstrap
......@@ -21,7 +21,7 @@ class Bootstrap extends Core\Application\AbstractBootstrap
/**
* @inheritdoc
*/
public function handle(Request $symfonyRequest, $type = self::MASTER_REQUEST, $catch = true)
public function handle(SymfonyRequest $symfonyRequest, $type = self::MASTER_REQUEST, $catch = true)
{
$this->setErrorHandler();
$this->initializeClasses($symfonyRequest);
......@@ -55,7 +55,7 @@ class Bootstrap extends Core\Application\AbstractBootstrap
/**
* @inheritdoc
*/
public function initializeClasses(Request $symfonyRequest)
public function initializeClasses(SymfonyRequest $symfonyRequest)
{
$this->container = ServiceContainerBuilder::create($this->appPath, $symfonyRequest, $this->appMode);
}
......@@ -76,7 +76,7 @@ class Bootstrap extends Core\Application\AbstractBootstrap
$redirect = $this