PHP code example of tijmenwierenga / snowplow-tracker
1. Go to this page and download the library: Download tijmenwierenga/snowplow-tracker 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/ */
tijmenwierenga / snowplow-tracker example snippets
declare(strict_types=1);
use TijmenWierenga\SnowplowTracker\Tracker;
use TijmenWierenga\SnowplowTracker\Emitters\HttpClientEmitter;
$emitter = new HttpClientEmitter('https://your-collector-uri')
$tracker = new Tracker($emitter)
declare(strict_types=1);
use Symfony\Component\HttpClient\Psr18Client;
use TijmenWierenga\SnowplowTracker\Emitters\HttpClientEmitter;
use TijmenWierenga\SnowplowTracker\Tracker;
// Instantiate your own HTTP Client
$httpClient = new Psr18Client();
// Pass it to the emitter
$emitter = new HttpClientEmitter('https://your-collector-uri', $httpClient);
$tracker = new Tracker($emitter);
declare(strict_types=1);
use TijmenWierenga\SnowplowTracker\Tracker;
use TijmenWierenga\SnowplowTracker\Config\Platform;
use TijmenWierenga\SnowplowTracker\Config\TrackerConfig;
$config = new TrackerConfig(
Platform::WEB, // The platform you're sending events from
'My Tracker Name', // The name of your tracker
'my-app-id' // A unique identifier for your app
);
$tracker = new Tracker(config: $config);
declare(strict_types=1);
$fallbackStrategy = new MyFallbackStrategy();
$tracker = new Tracker(fallbackStrategy: $fallbackStrategy);
declare(strict_types=1);
$tracker = new Tracker(throwOnError: false);
declare(strict_types=1);
use TijmenWierenga\SnowplowTracker\Events\PagePing;
$tracker->track(new PagePing(
0, // min horizontal offset
500, // max horizontal offset
250, // min vertical offset
300 // max vertical offset
));
declare(strict_types=1);
use TijmenWierenga\SnowplowTracker\Events\EcommerceTransaction;
$tracker->track(new EcommerceTransaction(
'd85e7b63-c046-47ac-b9a9-039d33ef3b3b', // order ID
49.95, // total value
));
declare(strict_types=1);
use TijmenWierenga\SnowplowTracker\Events\TransactionItem;
$tracker->track(new TransactionItem(
'd85e7b63-c046-47ac-b9a9-039d33ef3b3b', // order ID
'48743-48284-24', // SKU
12.95, // price
4 // quantity
));
declare(strict_types=1);
use TijmenWierenga\SnowplowTracker\Events\StructuredEvent;
$tracker->track(new StructuredEvent(
'my-category',
'my-action'
));
declare(strict_types=1);
use TijmenWierenga\SnowplowTracker\Events\UnstructuredEvent;
use TijmenWierenga\SnowplowTracker\Schemas\Schema;
use TijmenWierenga\SnowplowTracker\Schemas\Version;
$tracker->track(new UnstructuredEvent(
new Schema(
'com.snowplowanalytics.snowplow',
'ad_impression',
new Version(1, 0, 0)
),
[
'impressionId' => 'dcefa2cc-9e82-4d7e-bbeb-eef0e9dad57d'
]
));
declare(strict_types=1);
use TijmenWierenga\SnowplowTracker\Events\Pageview;
$pageviewEvent = new Pageview('https://github.com/TijmenWierenga');
$pageviewEvent->userId = 'TijmenWierenga';
declare(strict_types=1);
use TijmenWierenga\SnowplowTracker\Events\Schemable;
use TijmenWierenga\SnowplowTracker\Schemas\Schema;
use TijmenWierenga\SnowplowTracker\Schemas\Version;
final class Timing implements Schemable
{
public function __construct(
private readonly string $category,
private readonly string $variable,
private readonly int $timing,
private readonly ?string $label = null
) {
}
public function getSchema(): Schema
{
return new Schema(
'com.snowplowanalytics.snowplow',
'timing',
new Version(1, 0, 0)
);
}
public function getData(): array|string|int|float|bool|JsonSerializable
{
return array_filter([
'category' => $this->category,
'variable' => $this->variable,
'timing' => $this->timing,
'label' => $this->label
]);
}
}
declare(strict_types=1);
use TijmenWierenga\SnowplowTracker\Events\Pageview;
$pageviewEvent = new Pageview('https://github.com/TijmenWierenga');
$pageLoad = new Timing(
'pageLoad',
'ms',
21
);
$pageviewEvent->addContext($pageLoad);
callable(Event $event): Event
declare(strict_types=1);
use TijmenWierenga\SnowplowTracker\Events\Event;
use TijmenWierenga\SnowplowTracker\Events\Pageview;
use TijmenWierenga\SnowplowTracker\Events\StructuredEvent;
use TijmenWierenga\SnowplowTracker\Tracker;
final class AddUserIdMiddleware
{
public function __construct(
private readonly AuthenticatedUserIdProvider $userIdProvider
) {
}
public function __invoke(Event $event): Event
{
$event->userId = $this->userIdProvider->getUserId();
return $event;
}
}
$addUserIdMiddleware = new AddUserIdMiddleware(/** ... */);
$tracker = new Tracker(middleware: [$addUserIdMiddleware]);
$pageviewEvent = new Pageview('https://github.com/TijmenWierenga');
$structuredEvent = new StructuredEvent('my-category', 'my-action');
$tracker->track($pageviewEvent);
$tracker->track($structuredEvent);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.