我试图在构造函数中设置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请求相关联。你应该在一个实际的控制器方法中接收这个请求,你可以用多个不同的请求多次调用这个方法。通过强迫你的控制器在构造函数中解析会话或认证信息,你现在强迫你的整个控制器忽略实际的传入请求,这会在测试时导致严重的问题,等等。