无法在构造函数中获取cookie


Unable to get cookie in construct function

我试图在构造函数中设置cookie变量,但当我在构造中做Cookie::get('cookie_name');时,它会像下面这样设置一个散列变量。

eyJpdiI6ImRnRWF3TEa82Wm9cL3lRbng0OW1Wc1FBPT0iLCJ2YWx1ZSI6IlI4TkgwZGd6Mn

下面是我正在尝试的代码。

class CookieController extends Controller
{
    public $cookie;
    public function __construct(Request $request){
        $this->cookie = Cookie::get('cookie_name');
    }
    public function viewCookie(Request $request){
    return $this->cookie;
    }

如果我在viewCookie函数中调用Cookie::get('cookie_name');,那么它会显示正确的值。Cookie类在构造函数中禁用了吗?

我猜这与5.3在控制器构造函数中使用会话的变化有关。以下是Taylor Otwell的解释:

在构造函数中使用session或auth是非常糟糕的,因为还没有请求发生,session和auth本质上与HTTP请求相关联。你应该在一个实际的控制器方法中接收这个请求,你可以用多个不同的请求多次调用这个方法。通过强迫你的控制器在构造函数中解析会话或认证信息,你现在强迫你的整个控制器忽略实际的传入请求,这会在测试时导致严重的问题,等等。