amir-hossein5 / laravel-ip-logger
v1.2.1
2022-06-19 18:25 UTC
Requires
- php: ^8.0
- guzzlehttp/guzzle: ^6.3.1|^7.0.1
- laravel/framework: ^8.0|^9.0
Requires (Dev)
- orchestra/testbench: ^6.0|^7.0
README
混合获取IP详情并保存。
先决条件
- Laravel
^8.0|^9.0
- PHP 8
- guzzlehttp/guzzle:
^6.3.1|^7.0.1
安装
composer require amir-hossein5/laravel-ip-logger
和发布配置文件
php artisan vendor:publish --tag ipLogger
用法
仅获取详情
use AmirHossein5\LaravelIpLogger\Facades\IpLogger; IpLogger::getDetails();
处理详情的方法
例如
use AmirHossein5\LaravelIpLogger\Facades\IpLogger; IpLogger::prepare(function ($details) { return $details + ['test' => 'test']; })->getDetails();
保存到数据库
use AmirHossein5\LaravelIpLogger\Facades\IpLogger; IpLogger::model(ModelName::class) ->updateOrCreate( fn ($details) => [ 'ip' => $details['query'] ], fn ($details) => [ 'continent' => $details['continent'], 'country' => $details['country'], ... ], );
保存有两种方法,create
,updateOrCreate
,与Laravel类似。
手动获取详情
默认已编写两个API获取IP详情,ip_api 和 vpn_api。可以在配置文件中设置。
或者如果你想使用其他API手动获取详情。
use \AmirHossein5\LaravelIpLogger\Facades\IpLogger; IpLogger::detailsBe(function () { return [ ... ]; })->updateOrCreate(...);
异常处理
当保存到数据库(例如,create,updateOrCreate)时发生的异常可以通过以下方式处理
获取最后一个发生的异常
use AmirHossein5\LaravelIpLogger\Facades\IpLogger; IpLogger::getLastException();
直接捕获异常
use AmirHossein5\LaravelIpLogger\Facades\IpLogger; IpLogger::catch(function ($exception) { // send mail ... })...;
你应该将此作为第一种方法使用。
使用这种方式时不会分发任何事件。
监听异常
/** * The event listener mappings for the application. * * @var array */ protected $listen = [ AmirHossein5\LaravelIpLogger\Events\Failed::class => [ IpLoggerFailed::class, ] ];