Php Laravel 4动态模型调用

Php Laravel 4动态模型调用,php,api,laravel,laravel-4,Php,Api,Laravel,Laravel 4,我正在开发一个API来访问数据库中的一些数据。我正在为API的每个部分创建一个控制器。例如,我将有一个控制器参加API调用以获取电影列表(FilmsController),另一个控制器参加API调用以获取导演列表(DirectorsController) 每个控制器都有一组基本的方法(getList,getInfo),所以我制作了一个ApiController作为其他控制器的基础。在ApiController中,我有一组基本的方法,但我必须以非常不礼貌的方式调用模型 我错过了什么?有没有其他方法

我正在开发一个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”的答案正是我想要的。谢谢你们两位。