我试图让URL "/videoGame"运行"listAllVideoGames"方法和"/videoGame/#"(其中#是一个数字)运行"getVideoGame"方法。用"@priority"注释改变优先级,我可以使两个URL调用一个或另一个,但找不到我描述的方法。
/**
* @uri /videoGame
* @uri /videoGame/:id
*/
class VideoGame extends Resource{
protected function getDao(){
return new VideoGameDao();
}
/**
* @uri /videoGame
* @json
* @provides application/json
* @method GET
*/
public function listAllVideoGames(){
return new Response(Response::OK,$this->dao->getAllVideoGames());
}
/**
* @uri /videoGame/:id
* @json
* @provides application/json
* @method GET
*/
public function getVideoGame($id){
$vg = $this->dao->getVideoGame($id);
if ($vg){
return new Response(Response::OK,$vg);
}else{
throw new NotFoundException();
}
}
}
我发现这样做的唯一方法是为GET调用创建一种调度程序,如下所示:
/**
* @uri /videoGame
* @uri /videoGame/:id
*/
class VideoGame extends Resource{
protected function getDao(){
return new VideoGameDao();
}
/**
* @uri /videoGame/:id
* @provides application/json
* @method GET
*/
public function getVideoGames($id = 0){
if (is_numeric($id) && $id > 0){
return $this->getVideoGame($id);
}else{
return $this->getAllVideoGames();
}
}
private function getVideoGame($id){
$vg = $this->dao->getVideoGame($id);
if ($vg){
return new Response(Response::OK,$vg);
}else{
throw new NotFoundException();
}
}
public function getAllVideoGames(){
return new Response(Response::OK,$this->dao->getAllVideoGames());
}