我们正在使用SLIM框架构建API。在我们的API层次结构中,一些特定的操作可用于多个路径。这是一个例子:
$app->get('/surveys/:sid/contacts/:cid', function ($sid, $cid) use ($user) {
// Do stuff
});
OR
$app->get('/contacts/:cid/surveys/:sid', function ($cid, $sid) use ($user) {
// Do same stuff
});
我们已经看到了一些方法(例如Multiple routes with the same anonymous callback using Slim Framework)并且能够通过引用匿名函数来实现这一点。
$app->get('/surveys/:sid/contacts/:cid', $ref = function ($sid, $cid) use ($user) {
// Do stuff
});
AND
$app->get('/contacts/:cid/surveys/:sid', $ref); // Calls the same stuff, but with different order of arguments (wrong)
但是我们怎样才能处理更改传递参数的顺序(&#34; $ sid,$ cid&#34;&#34; $ cid,$ sid&#34;)?< / p>
谢谢!
谢谢Andrew Smith的回答!我们将使用稍微不同的实现:
function doStuff($user, $sid, $cid) {
// Do stuff
}
$app->get('/surveys/:sid/contacts/:cid', function ($sid, $cid) use ($user) {
doStuff($user, $sid, $cid);
});
$app->get('/contacts/:cid/surveys/:sid', function ($cid, $sid) use ($user) {
doStuff($user, $sid, $cid);
});
答案 0 :(得分:2)
由于您使用相同的功能,除了创建另一个可以调用第一个函数的函数之外,实际上并没有这样做的方法。见下面的例子。
<?php
function firstFunction ($sid, $cid) {
// Do stuff
};
function secondFunction ($cid, $sid) {
return firstFunction($sid, $cid);
};
$app->get('/surveys/:sid/contacts/:cid', 'firstFunction');
$app->get('/contacts/:cid/surveys/:sid', 'secondFunction');