Php 解释如何在构造函数Laravel 5.3中使用会话

Php 解释如何在构造函数Laravel 5.3中使用会话,php,laravel,session,laravel-5.3,laravel-middleware,Php,Laravel,Session,Laravel 5.3,Laravel Middleware,根据laravel文件 我无法再访问构造中的会话,因为中间件尚未加载,他们提供了一个我无法理解的示例 public function __construct() { $this->middleware(function ($request, $next) { $this->projects = Auth::user()->projects; return $next($request); }); } 如何在该函数中访问我的会话

根据laravel文件 我无法再访问构造中的会话,因为中间件尚未加载,他们提供了一个我无法理解的示例

public function __construct()
{
    $this->middleware(function ($request, $next) {
        $this->projects = Auth::user()->projects;

        return $next($request);
    });
}

如何在该函数中访问我的会话,解释可以将其放入控制器的
\uu construct()
函数中,该函数将处理该请求。

Laravel文档声明您无法再访问构造函数中的中间件,因为它尚未加载

通过使用这个特定的闭包,实际上是迫使php(和Laravel)将闭包中的任何逻辑作为中间件加载。看看Laravel提供的,看看你是否能把这些点连接起来

本质上,您正在对框架进行黑客攻击

也就是说,这是一种非常糟糕的做法,您不应该在控制器的构造函数中对会话进行调整

 public function __constrcut(){
    //changing language accordding to session
    $this->middleware(function($request,$next){
        app::setLocale(Session::get('locale'));
        return $next($request);
    });

此代码用于根据会话更改语言我使用的laravel 5.5版本注意:您必须先调用中间件,然后使用会话作为构造函数,但没有看到会话这对我有效

好吧,我正在尝试使用构造函数内的用户数据初始化全局变量,否则,我必须从数据库中调用它,为此创建一个中间件,然后将其添加到必要的路由中。构造函数用于初始化该类的属性,仅此而已。我这样做了,但我不确定在何处分配全局变量,我尝试从内部访问它,它确实获得了会话数据,因此我猜分配在闭包函数内部。闭包的作用域是确定的,必须使用($var)`才能正确地确定其作用域。