Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Lumen/Dingo API动态版本控制_Php_Rest_Routes_Lumen_Dingo Api - Fatal编程技术网

Php Lumen/Dingo API动态版本控制

Php Lumen/Dingo API动态版本控制,php,rest,routes,lumen,dingo-api,Php,Rest,Routes,Lumen,Dingo Api,我正在为我的项目使用Lumen,目前我的API版本是通过前缀和使用特定的相应控制器,如: $api->get('/v1/users', 'App\Api\V1\Controllers\UserController@show'); $api->get('/v2/users', 'App\Api\V2\Controllers\UserController@show'); 我想改变这一点,这样我就可以从用户那里获取一个参数,并使用一个基于该参数的控制器 This Route: $api-

我正在为我的项目使用Lumen,目前我的API版本是通过前缀和使用特定的相应控制器,如:

$api->get('/v1/users', 'App\Api\V1\Controllers\UserController@show');
$api->get('/v2/users', 'App\Api\V2\Controllers\UserController@show');
我想改变这一点,这样我就可以从用户那里获取一个参数,并使用一个基于该参数的控制器

This Route:
$api->get('/v{api_version}/users'...

Should use this controller: 
'App\Api\V{api_version}\Controllers\UserController@show'

我目前正在使用野狗沿侧腔,是否有任何方法可以使用流明或野狗?

是的,您可以。但它比你的例子要复杂一点,但它仍然是一行。只需定义一个闭包并在其中调用控制器,而不是直接传递FQCN控制器名称

路由/web.php

$app->get("api/v{version}/users", function ($version) use ($app) {
    return $app->make("App\Api\V{$version}\Controllers\UserController")->show();
});

如果其他人(和我一样)对如何在laravel安装中实现同样的功能感兴趣:只需在控制器解析后使用方法
Controller::callAction()

Route::get("api/v{version}/test", function ($version) {
    return app()->make('App\Api\V{$version}\Controllers\UserController')->callAction("show", [/* arguments */]);
});

谢谢你的回复!这真的很有帮助,很有魅力。但是,我想知道make()到底做什么?