0

我有这个类和过滤器:

class ApiController extends BaseController {

public function __construct()
{
    $this->afterFilter(function()
    {
        if ($this->response_type == 'json'){

        }
    });
}

当这条线运行时...

if ($this->response_type == 'json'){

...我指的是控制器,但不知何故它正在调用过滤器,所以我不能对父对象做任何事情。

有什么方法可以调用控制器类吗?

谢谢。

4

1 回答 1

0

如果您使用的是闭包(匿名函数),则可以指定要使用的“外部”变量,否则闭包的范围是本地的。

我的猜测,这应该对你有用

class ApiController extends BaseController {

public function __construct()
{
    $ctrl = $this;
    $this->afterFilter(function() use ($ctrl)
    {
        if ($ctrl->response_type == 'json')
        {
        //do stuff
        }
    });
}

很抱歉造成混淆 - 毕竟,这篇文章与Laravel 4: Reference controller object inside filter是重复的

于 2013-08-08T21:05:30.543 回答