【发布时间】:2016-08-11 01:33:18
【问题描述】:
我正在为我的laravel 应用程序使用AntonioRiveiro/Tracker 存储库。我想为它添加一些开箱即用的功能。
但是我找不到它的实例是在哪里创建的,或者如何访问我的控制器中的
Tracker对象。或者如何扩展跟踪器对象?
【问题讨论】:
标签: php laravel object tracking tracker
我正在为我的laravel 应用程序使用AntonioRiveiro/Tracker 存储库。我想为它添加一些开箱即用的功能。
但是我找不到它的实例是在哪里创建的,或者如何访问我的控制器中的Tracker 对象。
或者如何扩展跟踪器对象?
【问题讨论】:
标签: php laravel object tracking tracker
所以我认为最简单的方法是:
首先,制作自己的ServiceProvider
php artisan make:provider CustomTrackerServiceProvider
现在打开那个文件,我们需要做一些修改。
首先,我们需要扩展 Tracker 提供的 ServiceProvider。
use PragmaRX\Tracker\Vendor\Laravel\ServiceProvider as TrackerServiceProvider
class CustomTrackerServiceProvider extends TrackerServiceProvider
上面的use 别名不是必需的,但考虑到与核心框架类似的命名约定,我更喜欢它。
现在您需要在config/app.php 文件中的providers array 下替换您对PragmaRX\Tracker\Vendor\Laravel\ServiceProvider 的使用
config/app.php
'providers' => [
//other providers and what have you
App\Http\Providers\CustomTrackerServiceProvider::class
]
现在您可以进行更改了。只要核心类的成员不是private,您就可以覆盖它的默认功能。
查看供应商提供的文件并确定与供应商维护人员相似的架构模式,您就可以开始了。
【讨论】:
这个问题的答案提供了(2)的解决方案,我找到了(1)here的答案。
要访问跟踪器对象,您需要包括:
use PragmaRX\Tracker\Vendor\Laravel\Facade as tracker;
然后你会做这样的事情:
$visitor = Tracker::currentSession();
如documentation 中所述。
【讨论】: