Я знаю, что в основе Silex лежит подход, при котором вся логика приложения в одном файле. Но в моем приложении можно будет иметь более двадцати контроллеров. Вот и хочу иметь удобную карту для управления роутером.
Мой вопрос заключается в поиске решения, в котором я смог бы сделать роутер отдельным файлом. В лучшем случае файл должен быть типа YAML:
# config/routing.yml
_home:
pattern: /
defaults: { _controller: MyProject\Controller\MyController::index }
Но натив тоже хороший случай (для меня):
$routes = new RouteCollection();
$routes->add(
'home',
new Route('/', array('controller' => 'MyProject\Controller\MyController::index')
));
return $routes;
Проблема второго случая в том, что я должен использовать функцию match() для каждого правила маршрутизации. Это совсем не ясно.
Каковы пути решения этой проблемы? Условие состоит в том, что я хочу использовать существующий API Silex или компоненты Symfony2.
Небольшое примечание:
Я не использую ControllerProviderInterface для своих классов контроллеров. Это независимые классы.