如何访问 Laravel 中的 Tracker (antonioribeiro/tracker) 对象

How to access Tracker (antonioribeiro/tracker) object In Laravel

我正在使用 AntonioRiveiro/Tracker repo for my laravel 应用程序。我想为它添加一些开箱即用的功能。

  1. 但是我找不到它的实例是在哪里创建的,也找不到如何访问我的控制器中的 Tracker 对象。

  2. 或者如何扩展跟踪器对象?

所以我认为最简单的方法如下:

首先,制作自己的ServiceProvider

php artisan make:provider CustomTrackerServiceProvider

现在打开该文件,我们需要进行一些修改。

首先,我们需要扩展 Tracker 提供的 ServiceProvider。

use PragmaRX\Tracker\Vendor\Laravel\ServiceProvider as TrackerServiceProvider

class CustomTrackerServiceProvider extends TrackerServiceProvider

上面的 use 别名不是必需的,但考虑到与核心框架相似的命名约定,为了清晰起见,我更喜欢它。

现在您需要在 providers array

下的 config/app.php 文件中替换 PragmaRX\Tracker\Vendor\Laravel\ServiceProvider 的用法
config/app.php
'providers' => [
    //other providers and what have you
    App\Http\Providers\CustomTrackerServiceProvider::class
]

现在您可以进行更改了。您可以覆盖核心 class 的默认功能,只要它的成员不是 private

查看供应商提供的文件并确定与供应商维护人员相似的架构模式,您就可以开始了。

这个问题的答案为(2)提供了解决方案,我找到了(1)的答案here

要访问您需要包含的跟踪器对象:

use PragmaRX\Tracker\Vendor\Laravel\Facade as tracker;

然后你会做类似的事情:

$visitor = Tracker::currentSession();

documentation所述。