问题
How can I define multiple routes that use the same anonymous callback?
$app->get('/first_route',function()
{
//Do stuff
});
$app->get('/second_route',function()
{
//Do same stuff
});
I know I can use a reference to a function which would work, but I'd prefer a solution for using the anonymous function to be consistent with the rest of the codebase.
So basically, what I'm looking for is a way of doing something like this:
$app->get(['/first_route','/second_route'],function()
{
//Do same stuff for both routes
});
~ OR ~
$app->get('/first_route',function() use($app)
{
$app->get('/second_route');//Without redirect
});
Thank you.
回答1:
You can use conditions to achieve just that. We use that to translate URLs.
$app->get('/:route',function()
{
//Do same stuff for both routes
})->conditions(array("route" => "(first_route|second_route)"));
回答2:
I can't give you a framework specific solution, but if it helps you can reference anonymous function:
$app->get('/first_route', $ref = function()
{
//Do stuff
});
$app->get('/second_route', $ref);
回答3:
Callbacks are delegates. So you can do something like that :
$app->get('/first_route', myCallBack);
$app->get('/second_route', myCallBack);
function myCallBack() {
//Do stuff
}
来源:https://stackoverflow.com/questions/11521264/multiple-routes-with-the-same-anonymous-callback-using-slim-framework