dotkernel / dot-user-agent-sniffer
Dotkernel component providing details about a device by parsing a user agent.
Installs: 2 654
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 5
Forks: 1
Open Issues: 1
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0
- laminas/laminas-stdlib: ^3.18.0
- matomo/device-detector: ^6.3.0
- psr/container: ^1.1.2
Requires (Dev)
- laminas/laminas-coding-standard: ^3.0
- phpunit/phpunit: ^10.2
- vimeo/psalm: ^6.0
README
dot-user-agent-sniffer is a wrapper on top of matomo/device-detector
dot-user-agent-sniffer badges
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', ), )