mirror of
https://github.com/Mibew/mibew.git
synced 2024-11-15 16:44:11 +03:00
Inject a Router to the Application via constructor
This commit is contained in:
parent
5337d899d4
commit
1a599a6af3
@ -18,10 +18,16 @@
|
||||
// Initialize libraries
|
||||
require_once(dirname(__FILE__) . '/libs/init.php');
|
||||
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Mibew\Application;
|
||||
use Mibew\Routing\RouteCollectionLoader;
|
||||
use Mibew\Routing\Router;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\Config\FileLocator;
|
||||
|
||||
$application = new Application();
|
||||
$file_locator = new FileLocator(array(MIBEW_FS_ROOT));
|
||||
$router = new Router(new RouteCollectionLoader($file_locator));
|
||||
|
||||
$application = new Application($router);
|
||||
|
||||
// Process request
|
||||
$request = Request::createFromGlobals();
|
||||
|
@ -27,9 +27,8 @@ use Mibew\Http\Exception\HttpException;
|
||||
use Mibew\Http\Exception\MethodNotAllowedException as MethodNotAllowedHttpException;
|
||||
use Mibew\Http\Exception\NotFoundException as NotFoundHttpException;
|
||||
use Mibew\Routing\Router;
|
||||
use Mibew\Routing\RouteCollectionLoader;
|
||||
use Mibew\Routing\RouterAwareInterface;
|
||||
use Mibew\Routing\Exception\AccessDeniedException as AccessDeniedRoutingException;
|
||||
use Symfony\Component\Config\FileLocator;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
@ -40,18 +39,13 @@ use Symfony\Component\Routing\Exception\ResourceNotFoundException as ResourceNot
|
||||
/**
|
||||
* Incapsulates whole application
|
||||
*/
|
||||
class Application
|
||||
class Application implements RouterAwareInterface
|
||||
{
|
||||
/**
|
||||
* @var Router|null
|
||||
*/
|
||||
protected $router = null;
|
||||
|
||||
/**
|
||||
* @var FileLocator|null
|
||||
*/
|
||||
protected $fileLocator = null;
|
||||
|
||||
/**
|
||||
* @var ControllerResolver|null
|
||||
*/
|
||||
@ -69,11 +63,12 @@ class Application
|
||||
|
||||
/**
|
||||
* Class constructor.
|
||||
*
|
||||
* @param Router $router Appropriate router instance.
|
||||
*/
|
||||
public function __construct()
|
||||
public function __construct(Router $router)
|
||||
{
|
||||
$this->fileLocator = new FileLocator(array(MIBEW_FS_ROOT));
|
||||
$this->router = new Router(new RouteCollectionLoader($this->fileLocator));
|
||||
$this->router = $router;
|
||||
$this->authenticationManager = new AuthenticationManager();
|
||||
$this->controllerResolver = new ControllerResolver(
|
||||
$this->router,
|
||||
@ -93,7 +88,7 @@ class Application
|
||||
// Actualize request context in the internal router instance
|
||||
$context = new RequestContext();
|
||||
$context->fromRequest($request);
|
||||
$this->router->setContext($context);
|
||||
$this->getRouter()->setContext($context);
|
||||
|
||||
// Actualize cookie factory in the authentication manager.
|
||||
$cookie_factory = CookieFactory::fromRequest($request);
|
||||
@ -104,7 +99,7 @@ class Application
|
||||
// Try to match a route, check if the client can access it and add
|
||||
// extra data to the request.
|
||||
try {
|
||||
$parameters = $this->router->matchRequest($request);
|
||||
$parameters = $this->getRouter()->matchRequest($request);
|
||||
$request->attributes->add($parameters);
|
||||
|
||||
// Check if the user can access the page
|
||||
@ -152,6 +147,22 @@ class Application
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function setRouter(Router $router)
|
||||
{
|
||||
$this->router = $router;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getRouter()
|
||||
{
|
||||
return $this->router;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds response for pages with denied access
|
||||
*
|
||||
@ -188,7 +199,7 @@ class Application
|
||||
|
||||
// Operator is not logged in. Redirect him to the login page.
|
||||
$_SESSION['backpath'] = $request->getUri();
|
||||
$response = new RedirectResponse($this->router->generate('login'));
|
||||
$response = new RedirectResponse($this->getRouter()->generate('login'));
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ class Router implements RouterInterface, RequestMatcherInterface
|
||||
/**
|
||||
* Class constructor.
|
||||
*
|
||||
* @ param RouteLoader $loader An instance of route loader.
|
||||
* @param RouteLoader $loader An instance of route loader.
|
||||
* @param RequestContext $context The context of the request.
|
||||
*/
|
||||
public function __construct(RouteCollectionLoader $loader, RequestContext $context = null)
|
||||
|
Loading…
Reference in New Issue
Block a user