dotkernel/dot-user-agent-sniffer

Dotkernel component providing details about a device by parsing a user agent.

Maintainers

👁 dotkernel

Package info

github.com/dotkernel/dot-user-agent-sniffer

pkg:composer/dotkernel/dot-user-agent-sniffer

Statistics

Installs: 4 346

Dependents: 0

Suggesters: 0

Stars: 3

Open Issues: 1

3.8.0 2025-10-31 07:10 UTC

Requires

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 914adac690e5adb6be744d32d3fb0a4e966790ed

  • Dotkernel Team <team.woop@dotkernel.com>

This package is auto-updated.

Last update: 2026-06-29 01:49:57 UTC


README

Dotkernel component based on matomo/device-detector, providing details about a device by parsing a user agent.

dotkernel/dot-user-agent-sniffer is a wrapper on top of matomo/device-detector

Documentation

Documentation is available at: https://docs.dotkernel.org/dot-user-agent-sniffer/.

Badges

👁 OSS Lifecycle
👁 PHP from Packagist (specify version)

👁 GitHub issues
👁 GitHub forks
👁 GitHub stars
👁 GitHub license

👁 Build Static
👁 codecov
👁 PHPStan

Install

You can install this library by running the following command:

composer require dotkernel/dot-user-agent-sniffer

Before adding this library as a dependency to your service, you need to add Dot\UserAgentSniffer\ConfigProvider::class, to your application's config/config.php file.

Usage example

<?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);
 }
}

When called with an $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) returns an object with the following structure:

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',
 )),
))

The above call can also be chained as myMethod($userAgent)->getArrayCopy(), to retrieve the details as an array:

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',
 ),
)