devlop / utm-parameters
框架无关的UTM参数助手
Requires
- php: ^7.4|^8.0
- webmozart/assert: ^1.9
README
UTM参数
框架无关(PSR-7兼容)的UTM参数助手,这个工具将简化UTM参数的工作。
安装
composer require devlop/utm-parameters
使用
捕获传入的UTM参数
基本思路是从查询中捕获传入的UTM参数并将它们存储在cookie中,以备后用。
创建一个遵循此逻辑的中介(或类似)
use Devlop\UtmParameters\UtmParameters; // Capture incoming UTM parameters from the query $utmParameters = UtmParameters::capture($request); if ($utmParameters !== null) { // Remember the UTM parameters in cookies for 30 days $utmParameters->remember($response, 30); }
检索存储的UTM参数
稍后当你需要存储的UTM参数时(例如,在注册或下订单后),你可以轻松地检索它们。
use Devlop\UtmParameters\UtmParameters; // Retrieve stored UTM parameters from cookies $utmParameters = UtmParameters::retrieve($request); if ($utmParameters !== null) { // do something with the UTM parameters // optionally forget the cookies $utmParameters->forget($response); }
可用方法
Devlop\UtmParameters\UtmParameters具有以下可用方法
public function getSource() : string
获取 utm_source 参数。
public function getMedium() : ?string
获取 utm_medium 参数。
public function getCampaign() : ?string
获取 utm_campaign 参数。
public function getTerm() : ?string
获取 utm_term 参数。
public function getContent() : ?string
获取 utm_content 参数。
public function toArray() : array
获取所有参数作为数组
[
"utm_source" => "github",
"utm_medium" => "email",
"utm_campaign" => "hackathon_2021",
"utm_term" => null,
"utm_content" => null,
]
迭代
UtmParameters是可迭代的
foreach ($utmParameters as $parameter => $value) { // ... }
常量
所有参数键都作为常量在UtmParameters上可用,以避免在代码中硬编码任何参数键。
$parameters = $utmParameters->toArray(); $parameters[UtmParameters::SOURCE]; $parameters[UtmParameters::MEDIUM]; $parameters[UtmParameters::CAMPAIGN]; $parameters[UtmParameters::TERM]; $parameters[UtmParameters::CONTENT];
支持的请求/响应
在捕获/检索UTM参数时,支持以下请求。
- \Psr\Http\Message\ServerRequestInterface
- \Symfony\Component\HttpFoundation\Request
- \Laravel\Http\Request
在记住/忘记UTM参数时,支持以下响应。
- \Psr\Http\Message\MessageInterface
- \Symfony\Component\HttpFoundation\Response
- \Laravel\Http\Response
- \Illuminate\Contracts\Cookie\QueueingFactory
Laravel
Cookie外观
在Laravel中,最简单的方法是使用全局cookie()辅助方法来获取QueueingFactory的实例,以便将cookie附加到响应。
中介
utm-parameters附带了用于Laravel的中介,您可以使用它。
在app/Http/Kernel.php中添加中介,中介将自动捕获任何传入的UTM参数并将它们存储在cookie中,持续时间为30天。
namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { /** * The application's route middleware groups. * * @var array */ protected $middlewareGroups = [ 'web' => [ // other configured middleware \Devlop\UtmParameters\Laravel\StoreUtmParametersInCookies::class, ], ]; }