1. Go to this page and download the library: Download rasuvaeff/yii3-utm 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/ */
rasuvaeff / yii3-utm example snippets
use Rasuvaeff\Yii3Utm\UtmParameters;
$utm = UtmParameters::fromArray($request->getQueryParams());
$utm->source; // 'google'
$utm->content; // 'banner-a' — mapped to content, not campaign
$utm->isEmpty(); // false
$utm->toArray(); // stable snake_case keys, round-trip safe
use Rasuvaeff\Yii3Utm\ClickIds;
$ids = ClickIds::fromArray($request->getQueryParams());
$ids->get('gclid'); // 'EAIaIQobChMI...'
$ids->isEmpty(); // false
$ids->toJson(); // {"gclid":"..."} — deterministic key order
use Rasuvaeff\Yii3Utm\{Referrer, UtmHistory, UtmSimilarity, UtmTouchpoint};
$touchpoint = UtmTouchpoint::of(
utm: $utm,
occurredAt: new DateTimeImmutable('now', new DateTimeZone('UTC')),
clickIds: $ids,
referrer: Referrer::of('https://ads.example.com/'),
landingPage: 'https://shop.example.com/summer',
);
$history = UtmHistory::of($touchpoint)
->deduplicated(UtmSimilarity::Campaign) // keeps the oldest of each group
->limited(5); // keeps the newest five
$history->latest();
$history->oldest();
use Rasuvaeff\Yii3Utm\InteractionType;
InteractionType::registration();
InteractionType::purchase();
InteractionType::of('trial_started'); // /^[a-z][a-z0-9_]{0,31}\z/
use Rasuvaeff\Yii3Utm\{Channel, DefaultChannelResolver};
$channel = (new DefaultChannelResolver())->resolve($touchpoint);
// Channel::Paid — a click id outranks everything else
use Rasuvaeff\Yii3Utm\UtmCaptureMiddleware;
// web pipeline
UtmCaptureMiddleware::class,
use Rasuvaeff\Yii3Utm\UtmRequest;
UtmRequest::current($request); // ?UtmTouchpoint — carried by this request
UtmRequest::history($request); // UtmHistory — stored, may be empty
UtmRequest::effective($request); // ?UtmTouchpoint — current ?? newest stored
use Rasuvaeff\Yii3Utm\CallbackConsentPolicy;
new CallbackConsentPolicy(
static fn (ServerRequestInterface $r): bool => $consentBanner->accepted($r),
);
use Rasuvaeff\Yii3Utm\{InteractionType, UtmAttributionEvent, UtmAttributionService};
$service = new UtmAttributionService($repository); // repository comes from -db or the app
$service->record(new UtmAttributionEvent(
entityId: (string) $user->getId(),
eventId: $order->getUuid(), // stable across retries, new for a new event
interactionType: InteractionType::purchase(),
history: $history,
)); // returns the number of rows actually created
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.