在Slim 3中使用控制器创建路由,就像在Laravel 5中一样


Create routes with controllers in Slim 3 like in Laravel 5

使用Routes中的PHP框架Slim 3,我做到了:

// In routes :
$app->get('article/{id}-{slug}', function ($request, $response, $args) {
    $class = new Site'ArticleController($args);
    $class->show();
});
// In controllers :
public function show($args)
{
    $sql = "SELECT * FROM articles WHERE id = $args['id'] AND slug = $args['slug']";
    // ...
}

在Laravel 5中,这可以写成:

// In routes :
Route::get('article/{id}-{slug}', 'Site'ArticleController@show');
// In controllers :
public function show($id, $slug)
{
    $sql = "SELECT * FROM articles WHERE id = $id AND slug = $slug";
    // ...
}

我们能对Slim 3做同样的事情吗?我的意思是:

$app::get('article/{id}-{slug}', 'Site'ArticleController@show');

您可以通过以下操作构建类似于Laravel的Slim 3路由:

<?php
// In routes :
$app->get('article/{id}-{slug}', ''Site'ArticleController:show');
// In controllers :
public function show($request, $response, $args)
{
    $sql = "SELECT * FROM articles WHERE id = $args['id'] AND slug = $args['slug']";
    // ...
}

Slim路由器现在在第一个和第二个参数中传递$request和$response,然后传递您在最后$args中设置的任何Route参数。

我希望这能有所帮助!:)