benwilkins/laravel-analyst

此包的最新版本(v1.1)没有可用的许可证信息。

Laravel 分析包

v1.1 2019-03-22 16:30 UTC

This package is auto-updated.

Last update: 2024-09-23 05:56:21 UTC


README

Latest Version Software License

使用此包从一个或多个数据源检索您的应用程序的分析数据。当前,此包支持内部数据源和 Google Analytics。

安装

此包可以通过 Composer 安装。

composer require benwilkins/laravel-analyst

安装后,添加服务提供者

// config/app.php
'providers' => [
    ...
    Benwilkins\Analyst\AnalystServiceProvider::class,
    ...
];

发布配置文件

php artisan vendor:publish --provider="Benwilkins\Analyst\AnalystServiceProvider"

此包还附带了一个门面,使调用类变得容易

// config/app.php
'aliases' => [
    ...
    'Analyst' => Benwilkins\Analyst\AnalystFacade::class,
    ...
];

以下配置文件将发布在 config/laravel-analyst.php

return [
    /*
     * Path to the client secret json file.
     */
    'google_account_credentials_json' => storage_path('app/laravel-analyst/Google/account-credentials.json'),
    /*
     * The amount of minutes the Google API responses will be cached.
     * If you set this to zero, the responses won't be cached at all.
     */
    'cache_lifetime_in_minutes' => 60 * 24,
    /*
     * The directory where the underlying Google_Client will store it's cache files.
     */
    'cache_location' => storage_path('app/laravel-analyst/'),
    /*
     * The directory where custom internal metrics are stored.
     */
    'custom_metric_location' => '/app/Metrics/',
    /*
     * Default data client
     */
    'default_client' => 'internal',
];

内部客户端

内部客户端可用于从您应用程序的数据库中拉取分析数据。默认情况下,客户端附带一个度量:NewUsersMetric

自定义度量

内部客户端的自定义度量可以通过创建一个度量类并将其添加到自定义度量目录来使用。默认情况下,该目录为 /app/Metrics/,但可以从配置中更改。

要添加自定义度量

  1. 创建一个新的类,其命名空间为 Benwilkins\Analyst\Clients\Internal\Metrics。该类应扩展 Metric 抽象类。
  2. 您的类必须实现 run 方法。此方法接受两个参数:$period$params。Period 是 Period 类的实例,它定义了度量的日期范围。params 参数允许将自定义参数应用于度量,例如过滤器。
// app/Metrics/MyNewMetric.php
namespace Benwilkins\Analyst\Clients\Inernal\Metrics;

use Benwilkins\Analyst\Period;

class MyNewMetric extends Metric
{
    public function run(Period $period, $params = [])
    {
        // Code to run the metric
    }
}

示例用法

要使用内部客户端,请遵循以下示例

use Benwilkins\Analyst\Period;


$data = Analyst::metric('new users', Period::days(30));

Google Analytics 客户端

Google Analytics 客户端使用 Analytics Reporting API。您需要从 Google 开发者控制台获取 Google 服务帐户密钥。

  1. 在控制台中,按照步骤创建一个新的应用程序。
  2. 启用 Analytics Reporting API
  3. 点击“凭据”选项卡,按照步骤创建凭据。
  4. 选择服务帐户密钥作为凭据类型。
  5. 选择新的服务帐户并给它一个名称。选择 JSON 作为密钥类型。
  6. 下载 JSON 文件并将其保存在包配置文件中指定的位置。

最后,您需要授予对 Google Analytics 属性的权限

  1. 转到属性管理部分的“用户管理”。
  2. 使用在下载的 JSON 文件中找到的 client_email 键中的电子邮件地址。读取访问权限就足够了。

选项

Google Analytics 客户端为配置提供了一些选项

  • viewId(必需):要从其中提取数据的 Google Analytics 视图的 ID。这可以在配置文件中设置为默认值。
  • dimensions:要添加到查询中的维度数组。
  • alias:用于度量名称的可选别名
  • groupByDimensions:此选项允许您按维度分组结果。传递一个数组,包含您希望从 dimensions 选项中按索引分组的维度的索引。请参见下面的示例。

示例

此示例查询事件,接受 ga:eventCategoryga:eventActionga:eventLabelga:date 维度。结果按 ga:eventCategoryga:eventAction 的组合进行分组。

$metric = Analyst::metric(
    ['ga:totalEvents'],
    Period::days(14),
    Analyst::client('google'),
    [
        'viewId' => 'XXXXXX', // <- YOUR VIEW ID
        'dimensions' => ['ga:eventCategory', 'ga:eventAction', 'ga:eventLabel', 'ga:date'],
        'alias' => ['events'],
        'groupByDimensions' => [0, 1]
    ]);

$metric 的值将是 AnalystDataCollection 的实例。

访问您的数据

Analyst 数据集合

两个客户端都返回一个 AnalystDataCollection 实例。此集合有一些访问器方法,使使用数据变得容易。

  • getTotal:返回请求的指标的总数。
  • getGroups:返回一个包含AnalystDataGroup对象的数组。
  • getRaw:返回原始格式的数据。

分析师数据组

AnalystDataGroup类是对您的数据的分组。每个指标调用至少有一个组。一个组由两个主要属性组成:totalpoints

  • getTotal:返回该分组的总指标数。
  • getPoints:返回每个组的数据点,格式化为可以与Google Charts一起使用的形式。

路线图

  • 为Google和内部客户端添加缓存
  • 添加Artisan命令以创建新的内部指标

安全性

如果您发现任何与安全相关的问题,请使用GitHub上的问题跟踪器。

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件