Silex 添加包含到控制器的所有路由的路由文件

Silex add Routing file with all the routes to controllers

我正在使用 silex 创建我的 API REST。 在一个例子中,我找到了一种创建路线的方法

$api = $this->app["controllers_factory"];
$api->get('/notes', "notes.controller:getAll");
$api->get('/notes/{id}', "notes.controller:getOne");
$api->post('/notes', "notes.controller:save");
$api->put('/notes/{id}', "notes.controller:update");
$api->delete('/notes/{id}', "notes.controller:delete");

我正在寻找一种方法来包含一个包含所有路由的数组,并在我的应用 bootstrap 文件中创建和实例化。有什么想法吗?

  1. 延长Silex\Application
  2. 增加仅根据参数添加路由的功能
  3. 运行 遍历具有所需参数的元素数组

例子

use Silex\Application as SilexApplication;

class Application extends SilexApplication
{
    public function addRoute($method, $route, $class, $callback)
    {
        $this->$method($route, array($class, $callback));
    }

    public function addRouteStatic($method, $route, $callback)
    {
        $this->$method($route, $callback);
    }

    public function addRoutes($routes)
    {
        foreach ($routes as $route) {
            $this->addRoute(
                $route['method'],
                $route['route'],
                $route['class'],
                $route['callback']
            );
        }
    }
}

$app = new Application();
$app->addRoute('get', '/notes', 'My\Namespace\Note', 'getAllNotes');
$app->addRouteStatic('get', '/notes', 'My\Namespace\Note::getAllNotesStatic');