Я пробую Silex, и у меня есть небольшая проблема, или, я бы сказал, скорее неудобство...
Я пытаюсь загрузить 2 маршрута из 2 отдельных файлов yaml, но почему-то монтирование ($app->mount(...)
) не работает с замыканиями.
Вот код:
// load configuration
$loader->load('core.yml');
$loader->load('api.yml');
function bla($app, $container, $key) {
$myApp = $app['controllers_factory'];
foreach ($container->getExtensionConfig('routes')[$key] as $name => $route) {
$controller = $myApp->match($route['pattern'], $route['controller']);
$controller->method($route['requirements']['_method']);
$controller->bind($name);
}
return $myApp;
}
$app->mount('/core', bla($app, $container, 0));
$app->mount('/api', bla($app, $container, 1));
Это работает.
Что не работает, так это то, что я делаю то же самое с замыканиями, например:
$app->mount('/core', function ($app, $container, $key) {
return $app['controllers_factory'];
});
Выдает следующую ошибку:
LogicException: The "mount" method takes either a ControllerCollection or a ControllerProviderInterface instance.
Но
var_dump($app['controllers_factory']);
выдает объект типа Silex\ControllerCollection
.
Я явно что-то упускаю.
Спасибо за помощь.