【问题标题】:Do Laravel Controllers Share Properties between requests?Laravel 控制器是否在请求之间共享属性?
【发布时间】:2020-06-16 21:30:20
【问题描述】:

Laravel 控制器是否在不同的 HTTP 请求之间共享属性? 例如,如果我有下一个代码

<?php

namespace App\Http\Controllers;

class UserController extends Controller
{
    private $user;

    public function __construct()
    {
        $this->user = Auth::user();
    }

    public function show_user_name() {

        return view('user.profile', ['user_name' => $this->user->name]);

    }
}

还有

Route::get('/user', 'UserController@show_user_name');

如果多个用户同时调用/users$user 对所有请求都相同,那会不会很混乱?

【问题讨论】:

  • 是的,它为每台不同的机器或应用程序维护不同的 HTTP 请求

标签: php laravel


【解决方案1】:

您的代码不正确。 您必须使用$this-&gt; 来设置类的属性

<?php

namespace App\Http\Controllers;

class UserController extends Controller
{
    private $user;

    public function __construct()
    {
        $this->user = Auth::user();
    }

    ...
}

关于您的问题 - 没有控制器不会在彼此之间共享属性。 (尤其是私有财产时)

但是你可以在任何你想要的地方使用Auth::user()。它在任何地方都是相同的,但对于每个请求都会有所不同,因为它取决于用户 cookie、令牌和会话。

【讨论】:

  • 谢谢)这只是一个紧急编写的示例,我修复了代码
猜你喜欢
  • 2015-11-03
  • 1970-01-01
  • 2019-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-25
相关资源
最近更新 更多