1つのアプローチは、以下に示すように、条件付きブロックを使用して同じ関数で両方のケースを処理することです
function get($id, $action=null){
if(is_null($action)){
//handle it as just $id case
}else{
//handle it as $id and $action case
}
}
restler 3 以降を実行している場合は、スマート ルーティングを無効にする必要があります。
/**
* @smart-auto-routing false
*/
function get($id, $action=null){
if(is_null($action)){
//handle it as just $id case
}else{
//handle it as $id and $action case
}
}
別のアプローチは、インデックスもルートにマップされるため、複数の関数を使用することです。オプションはほとんどありません。関数にget、index、getIndexなどの名前を付けることができます
function get($id, $action){
//returns data based on action and id
}
function index($id){
//returns profile based on id
}
Restler 2 を使用している場合、またはオフにしている場合は、あいまいさsmart routing
を解消するために関数の順序が重要です。
関数名のオプションが不足している場合は、@fiskfisk が提案するように @url マッピングを使用できますが、次を使用してオフにしない限り、クラスルートは常に先頭に追加されるため、ルートにはメソッドレベルからのみ含める必要があります$r->addAPIClass('MyClass','');
function get($id){
//returns data based on action and id
}
/**
* @url GET :id/duels
*/
function duels($id)
{
}
HTH