dotkernel/dot-user-agent-sniffer

通过解析用户代理来提供设备详细信息的DotKernel组件。

3.5.1 2024-06-28 10:13 UTC

This package is auto-updated.

Last update: 2024-08-28 10:42:14 UTC


README

dot-user-agent-sniffer 是对 matomo/device-detector 的封装

OSS Lifecycle

dot-user-agent-sniffer 徽章

OSS Lifecycle PHP from Packagist (specify version)

GitHub issues GitHub forks GitHub stars GitHub license

Build Static codecov

SymfonyInsight

安装

您可以通过运行以下命令来安装此库

composer require dotkernel/dot-user-agent-sniffer

在将此库作为依赖项添加到您的服务之前,您需要将 Dot\UserAgentSniffer\ConfigProvider::class, 添加到您的应用的 config/config.php 文件中。

使用示例

<?php

declare(strict_types=1);

namespace Api\Example\Service;

use Dot\UserAgentSniffer\Data\DeviceData;
use Dot\UserAgentSniffer\Service\DeviceServiceInterface;

/**
 * Class MyService
 * @package Api\Example\Service
 */
class MyService
{
    /** @var DeviceServiceInterface $deviceService */
    protected $deviceService;

    /**
     * MyService constructor.
     * @param DeviceServiceInterface $deviceService
     */
    public function __construct(DeviceServiceInterface $deviceService)
    {
        $this->deviceService = $deviceService;
    }

    /**
     * @param string $userAgent
     * @return DeviceData
     */
    public function myMethod(string $userAgent)
    {
        return $this->deviceService->getDetails($userAgent);
    }
}

当使用 $userAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/78.0.3904.84 Mobile/15E148 Safari/604.1' 调用,myMethod($userAgent) 返回具有以下结构的对象

Dot\UserAgentSniffer\Data\DeviceData::__set_state(array(
    'type' => 'smartphone',
    'brand' => 'Apple',
    'model' => 'iPhone',
    'isBot' => false,
    'isMobile' => true,
    'os' =>
      Dot\UserAgentSniffer\Data\OsData::__set_state(array(
        'name' => 'iOS',
        'version' => '13.2',
        'platform' => '',
    )),
    'client' =>
      Dot\UserAgentSniffer\Data\ClientData::__set_state(array(
        'type' => 'browser',
        'name' => 'Chrome Mobile iOS',
        'engine' => 'WebKit',
        'version' => '78.0',
    )),
))

上述调用也可以链式调用为 myMethod($userAgent)->getArrayCopy(),以获取作为数组的详细信息

array (
    'type' => 'smartphone',
    'brand' => 'Apple',
    'model' => 'iPhone',
    'isMobile' => true,
    'isBot' => false,
    'os' =>
      array (
        'name' => 'iOS',
        'version' => '13.2',
        'platform' => '',
    ),
    'client' =>
      array (
        'type' => 'browser',
        'name' => 'Chrome Mobile iOS',
        'engine' => 'WebKit',
        'version' => '78.0',
    ),
)