用于不同分析服务的通用接口
A unified analytics bridge for Laravel providing a consistent API across multiple analytics providers such as Google Analytics, Matomo, and others.
Install the driver package you need:
# for Matomo
composer require aimeos/laravel-analytics-matomo
# for Google Analytics
composer require aimeos/laravel-analytics-google
# for Cloudflare Web Analytics
composer require aimeos/laravel-analytics-cloudflare
Publish the configuration file:
php artisan vendor:publish --tag=config
This creates the ./config/analytics-bridge.php file:
…
Set your .env variables accordingly and don't forget to configure the
ANALYTICS_DRIVER value using the name of the driver ("cloudflare",
"google", or "matomo").
The value of GOOGLE_AUTH must be the string from the Service Account JSON
key file encoded as base64. To do the encoding on the command line, use:
php -r 'echo base64_encode(file_get_contents("name-xxxxxxxxxxxx.json"));'
Import the facade:
use Aimeos\AnalyticsBridge\Facades\Analytics;
Available are:
$result = Analytics::stats('https://aimeos.org/features', 30);
// to limit the result set
$result = Analytics::types(['visits', 'referrers'])->stats('https://aimeos.org/features', 30);
It returns arrays with one entry per day, country or URL:
…
$data = Analytics::pagespeed('https://aimeos.org/features');
Returns:
[
['key' => 'round_trip_time', 'value' => 150],
['key' => 'time_to_first_byte', 'value' => 700],
['key' => 'first_contentful_paint', 'value' => 1200],
['key' => 'largest_contentful_paint', 'value' => 1700],
['key' => 'interaction_to_next_paint', 'value' => 180],
['key' => 'cumulative_layout_shift', 'value' => 0.05],
/*...*/
]
$data = Analytics::search('https://aimeos.org/features');
Returns:
[
'impressions' => [
['key' => '2025-08-01', 'value' => 123],
['key' => '2025-08-02', 'value' => 97],
...
],
'clicks' => [
['key' => '2025-08-01', 'value' => 23],
['key' => '2025-08-02', 'value' => 14],
...
],
'ctrs' => [ // click through rate (between 0 and 1)
['key' => '2025-08-01', 'value' => 0.194],
['key' => '2025-08-02', 'value' => 0.69],
...
],
$data = Analytics::queries('https://aimeos.org/features');
Returns:
[
['key' => 'aimeos', 'impressions' => 1234, 'clicks' => 512, 'ctr' => 0.41, 'position' => 1.1],
['key' => 'laravel ecommerce', 'impressions' => 2486, 'clicks' => 299, 'ctr' => 0.11, 'position' => 1.9],
...
$data = Analytics::indexed('https://aimeos.org/features', 'en-US');
Returns something like:
For a new analyics service (e.g. Foobar), create a new composer package, e.g.
yourorg/laravel-analytics-foobar. Replace every occurrence of "yourorg" and
"foobar" (in any case) with own vendor name and resp. the service name.
Use this composer.json as template:
{
"name": "yourorg/laravel-analytics-foobar",
"description": "Foobar driver for Laravel Analytics Bridge",
"type": "library",
"license": "LGPL-2.1+",
"autoload": {
"psr-4": {
"Aimeos\\AnalyticsBridge\\Drivers\\": "src/"
}
},
"require": {
"php": "^8.1",
"aimeos/laravel-analytics-bridge": "~1.0"
}
}
Create a ./src/Foobar.php file that implements fetching the data from the
analytics service. The skeleton class is:
[['key' => '2025-08-01', 'value' => 123], /*...*/],
'visits' => [['key' => '2025-08-01', 'value' => 123], /*...*/],
'durations' => [['key' => '2025-08-01', 'value' => 123], /*...*/],
'countries' => [['key' => 'Germany', 'value' => 321], /*...*/],
'referrers' => [['key' => 'https://aimeos.org/', 'value' => 321], /*...*/],
];
}
public function types(array $types): Driver
{
$this->types = $types;
return $this;
}
}
Install your package using composer:
composer require yourorg/laravel-analytics-foobar
Register your driver in config/analytics-bridge.php, e.g.:
'drivers' => [
'foobar' => [
'url' => env('FOOBAR_URL'),
// more required settings
]
],
The google/apiclient package contains classes for all Google APIs (currently
over 300) but only two (SearchConsole and WebIndex) are required. To install
only the required ones, insert this into your composer.json at the correct
places:
"scripts": {
"pre-autoload-dump": [
"Google\\Task\\Composer::cleanup"
],
},
"extra": {
"google/apiclient-services": [
"SearchConsole"
]
},
When you run composer update afterwards, this will remove the unused services.
Take a look into the Google client README
for details.
This package is released under the LGPL-2.1+ License.
暂无开放 Issues,或尚未同步最近议题。