PHP code example of gurmanalexander / laravel-metrics

1. Go to this page and download the library: Download gurmanalexander/laravel-metrics library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

gurmanalexander / laravel-metrics example snippets


GurmanAlexander\Metrics\MetricsServiceProvider::class,

class FirstPaymentMetrics extends CountMetrics
{

}

use GurmanAlexander\Metrics\Metricable;
class User extends Model
{
    use Metricable;
    ...
}

// For example, when creating user start Metrics
$user = User::create(['email', 'password']);
$user->startMetrics(new FirstPaymentMetrics($user));

// when user view some news
$user = auth()->user();
$news->startMetrics(new PageViewCountMetrics($user));

// when user make some payment
$user->paySomething();
$user->closeMetrics(new FirstPaymentMetrics($user));

// when user logout
$user = auth()->user();
$news->closeMetrics(new PageViewCountMetrics($user));
auth()->logout();

$user = auth()->user();
$user->onceMetrics(new SomeOnceMetrics());

// to get total payments
$stats = new MetricsStatistics(new FirstPaymentMetrics());

// model
$stats->user(auth()->user());

// array
$stats->user([auth()->user(), User:first()]);

// collection
$stats->user(User::where('is_active', 1)->get());

$start_at = Carbon::now()->startOfMonth();
$stats->startAt($start_at);

$end_at = Carbon::now()->endOfMonth();
$stats->endAt($end_at);

$start_at = Carbon::now()->startOfMonth();
$end_at = Carbon::now()->endOfMonth();
$stats->betweenAt($start_at, $end_at);

$stats->hourly();
$stats->daily();
$stats->weekly();
$stats->monthly();
$stats->yearly();

// result example
$stats->hourly()->count()->toArray();

// [
//     0 => [
//         "count" => 23,
//         "date" => "2017-06-30",
//         "period" => "hour",
//         "hour" => 9
//     ],
//     1 => [
//         "count" => 15,
//         "date" => "2017-06-30",
//         "period" => "hour",
//         "hour" => 8
//     ],
//     2 => [
//         "count" => 32,
//         "date" => "2017-06-30",
//         "period" => "hour",
//         "hour" => 7
//     ],
// ]

// to get total payments
$stats = new MetricsStatistics(new FirstPaymentMetrics());

// to get average time from user registration to first payment (in seconds)
$stats = new MetricsStatistics(new FirstPaymentMetrics())->hourly()->avg()->toArray();

// [
//     0 => [
//         "avg" => 12.13,
//         "date" => "2017-06-30",
//         "period" => "hour",
//         "hour" => 9
//     ],
//     1 => [
//         "avg" => 8.00,
//         "date" => "2017-06-30",
//         "period" => "hour",
//         "hour" => 8
//     ],
//     2 => [
//         "avg" => 5.34,
//         "date" => "2017-06-30",
//         "period" => "hour",
//         "hour" => 7
//     ],
// ]
shell
php artisan vendor:publish --provider="GurmanAlexander\Metrics\MetricsServiceProvider"
shell
php artisan metrics:table
shell
php artisan migrate
shell
php artisan make:metrics PageViewCountMetrics
shell
php artisan make:metrics FirstPaymentMetrics