Php Laravel 4动态模型调用
我正在开发一个API来访问数据库中的一些数据。我正在为API的每个部分创建一个控制器。例如,我将有一个控制器参加API调用以获取电影列表(FilmsController),另一个控制器参加API调用以获取导演列表(DirectorsController) 每个控制器都有一组基本的方法(getList,getInfo),所以我制作了一个ApiController作为其他控制器的基础。在ApiController中,我有一组基本的方法,但我必须以非常不礼貌的方式调用模型 我错过了什么?有没有其他方法可以动态调用模型?我用错控制器了 这是密码,谢谢Php Laravel 4动态模型调用,php,api,laravel,laravel-4,Php,Api,Laravel,Laravel 4,我正在开发一个API来访问数据库中的一些数据。我正在为API的每个部分创建一个控制器。例如,我将有一个控制器参加API调用以获取电影列表(FilmsController),另一个控制器参加API调用以获取导演列表(DirectorsController) 每个控制器都有一组基本的方法(getList,getInfo),所以我制作了一个ApiController作为其他控制器的基础。在ApiController中,我有一组基本的方法,但我必须以非常不礼貌的方式调用模型 我错过了什么?有没有其他方法
class ApiController extends BaseController {
protected $model = '';
public function getList()
{
$items = call_user_func(array($this->model,'all'));
return Response::json($items);
}
...
}
电影导演呢
class FilmsController extends ApiController {
protected $model = 'Film';
}
我的设计糟糕吗?如果您真的想将模型绑定到控制器,最好使用Laravel IoC容器及其自动解析功能
class ApiController extends BaseController {
protected $model;
public function getList()
{
$items = $this->model->all();
return Response::json($items);
}
}
class FilmsController extends ApiController {
public function __construct(Model $model)
{
$this->model = $model;
}
}
在为什么使用variable调用model并使用
call\u user\u func
函数中找到更多关于此的信息
您只需将ApiController创建为抽象类,然后将基本方法集(getList、getInfo)覆盖到FilmController和DirectorsController中,然后就可以使用Film模型
ApiController:
class ApiController extends BaseController {
public function getList()
{
}
class FilmsController extends ApiController {
public function getList()
{
$items = Film::all();
return Response::json($items);
}
}
电影控制者:
class ApiController extends BaseController {
public function getList()
{
}
class FilmsController extends ApiController {
public function getList()
{
$items = Film::all();
return Response::json($items);
}
}
问题是,我不想为每种情况实现getList方法,我希望为每个api部分都有一组“标准”的方法。这就是我创建ApicController的原因。“cheelahim”的答案正是我想要的。谢谢你们两位。