gpt4 book ai didi

laravel 使用事件系统统计浏览量的实现

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章laravel 使用事件系统统计浏览量的实现由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

最近有一个商城项目中有统计商品点击量和艺术家访问量的需求,但又不想改动太多原来的代码,而点击与访问这两个动作是有明确触发点的,正好可以用laravel中的事件系统来做,在点击和访问对应的函数中产生这俩事件,监视器获取到之后,再将记录保存到数据库中,并更新计数.

1、在 app\Providers\EventServiceProvider 。

中注册监听器:

?
1
2
3
4
5
6
7
8
9
10
11
12
/**
  * The event listener mappings for the application.
  *
  * @var array
  */
protected $listen = [
  ......
  'App\Events\Statistics' => [
   'App\Listeners\BehavioralStatistics' ,
  ],
  ......
];

2、执行 。

?
1
php artisan event:generate

生成事件类与监听类 。

3、定义事件 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
 
namespace App\Events;
 
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
 
class Statistics
{
  use Dispatchable, InteractsWithSockets, SerializesModels;
 
  public $user ;
  public $obj ;
 
  /**
   * Create a new event instance.
   *
   * @return void
   */
  public function __construct( $user , $obj )
  {
   $this ->user = $user ;
   $this ->obj = $obj ;
  }
 
  /**
   * Get the channels the event should broadcast on.
   *
   * @return \Illuminate\Broadcasting\Channel|array
   */
  public function broadcastOn()
  {
   return new PrivateChannel( 'channel-name' );
  }
}

4、定义监听器:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
 
namespace App\Listeners;
 
use App\Events\Statistics;
use App\System\StaticsView;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\Log;
 
class BehavioralStatistics
{
  /**
   * Create the event listener.
   *
   * @return void
   */
  public function __construct()
  {
   //
  }
 
  /**
   * Handle the event.
   *
   * @param Statistics $event
   * @return void
   */
  public function handle(Statistics $event )
  {
   $obj_class = get_class( $event ->obj);
   $statics_view = new StaticsView;
 
   switch ( $obj_class ){
    case "App\\User" :
     $statics_view ->statics_type = 'user' ;
 
     break ;
    case "App\\Production" :
     $statics_view ->statics_type = 'production' ;
 
     break ;
   }
 
   $statics_view ->ip = request()->getClientIp();;
   $statics_view ->time_local = 0;
   $statics_view ->statics_id = $event ->obj->id;
   $statics_view ->save();
  }
}

5、触发事件:

?
1
event( new Statistics(user, user,user,production));

以上这篇laravel 使用事件系统统计浏览量的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

原文链接:https://blog.csdn.net/hhhzua/article/details/80635808 。

最后此篇关于laravel 使用事件系统统计浏览量的实现的文章就讲到这里了,如果你想了解更多关于laravel 使用事件系统统计浏览量的实现的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com