Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在laravel EventHandler?;_Php_Laravel - Fatal编程技术网

Php 如何在laravel EventHandler?;

Php 如何在laravel EventHandler?;,php,laravel,Php,Laravel,我在BaseController中设置了一些参数: class BaseController{ public $user; public $param; ... __construct(){ $this->user = Auth::user(); $this->param = Input::all(); ... } } 现在我可以使用$this->user来获取每个控制器中的用户信息 但

我在BaseController中设置了一些参数:

class BaseController{
    public $user;
    public $param;
    ...
    __construct(){
        $this->user = Auth::user();
        $this->param = Input::all();
        ...
    }    
}
现在我可以使用$this->user来获取每个控制器中的用户信息

但是现在,我想在UserHandler@update为日志。如何获取当前控制器的实例?比如:

class UserHandler{
    public function onUpdate()
    {
           $instance = SomeClass::getCurrent();
           $user = $instance->user;
    }
}

我不想使用Auth::user()方法。因为在我的例子中,这是一个复杂的过程。

通常,所有内容都位于一个称为应用程序的容器中

$controller = app(\Illuminate\Routing\Route::class)->controller;
还有一个更好的方法

$controller = request()->route()->controller;
在Laravel 7.29.3上测试


您如何调用或实例化您的UserHandler?这是通过事件实现的吗?使用Auth::user()有什么问题?这就是你在控制器中所做的一切,那么在事件处理程序中这样做有什么问题呢?将一些东西拼凑起来以获得控制器的实例将是一个巨大的混乱。如果事件与用户操作相关,请使用Auth facade。。。拉威尔很聪明。安装debugbar,看看你有多少db查询(以及有多少重复)。我使用第三方身份验证包通过令牌获取用户,这也是一个巨大的黑客混乱。