Witam. Mam taki problem, że catch nie wyłapuje wyjątku, który powinien poinformować o tym, że strona nie została odnaleziona. Podaje całe kody plików:
index.php:
<?php
$config=require __DIR__.'/../config.php';
require __DIR__."/../app/vendor/autoload.php";
require __DIR__."/../app/functions.php";
require __DIR__.'/../app/database/db_connect.php';
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing;
$request= Request::createFromGlobals();
$routes=require __DIR__.'/../app/routes.php';
$context=new Routing\RequestContext();
$context->fromRequest($request);
$matcher=new Routing\Matcher\UrlMatcher($routes, $context);
$response=new Response();
try{
extract($matcher->match($request->getPathInfo()), EXTR_SKIP);
ob_start();
$db=new db_connect();
include sprintf(__DIR__.'/../app/controllers/%s.php', explode('::', $_route)[0]);
call_user_func($_route);
$response=new Response(ob_get_clean());
}catch (Routing\Exception\RouteNotFoundException $e){
$response->setStatusCode(404);
$response->setContent('Brak strony o podanym adresie');
}catch (Exception $e){
$response->setStatusCode(500);
$response->setContent('Wewnętrzny błąd aplikacji');
}
$response->send();
routes.php:
<?php
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;
$config=require __DIR__.'/../config.php';
$routes= new RouteCollection();
$routes->add('HomeController::index', new Route('/{lang}/home/{method}', array('lang'=>$config['default_lang'], 'controller'=>'home', 'method'=>'index')));
$routes->add('TestController::test', new Route('{lang}/test/test/{arg}', array('lang'=>$config['default_lang'], 'arg'=>'test')));
return $routes;
W teorii, po nie znalezieniu trasy w obiekcie $routes powinien zostać wyrzucony wyjątek, jednak tak się nie dzieje.