51degrees/fiftyone.devicedetection

Device detection engines for 51Degrees Pipeline API. Parse HTTP headers to detect hardware, operating system, browser, and crawler information.


README

51Degrees PHP Device Detection

Developer Documentation

Introduction

This project contains the source code for the PHP implementation of 51Degrees' cloud-based device detection engine for use with the Pipeline API.

Dependencies

The tested versions page shows the PHP versions that we currently test against. The software may run fine against other versions, but additional caution should be applied.

You will require a resource key to use the Cloud API. You can create resource keys using our configurator, see our documentation on how to use this.

Examples

To run the examples, you will need PHP and composer installed. Once these are available, install the dependencies required by the examples. Navigate to the repository root and execute:

composer install

This will create the vendor directory containing autoload.php.

Ensure the resource_key environment variable is set to your resource key prior to running the example scripts. Now navigate to the examples directory and start a PHP server with the relevant file. For example:

php -S localhost:3000 cloud/gettingstarted.php

or to run in a terminal

php cloud/gettingstarted.php

This will start a local web server listening on port 3000. Open your web browser and browse to http://localhost:3000/ to see the example in action.

The table below describes the examples that are available.

Example Description
gettingStartedConsole How to use the 51Degrees Cloud service to determine details about a device based on its User-Agent and User-Agent Client Hints HTTP header values.
gettingStartedWeb How to use the 51Degrees Cloud service to determine details about a device as part of a simple ASP.NET website.
tacLookupConsole How to get device details from a TAC (Type Allocation Code) using the 51Degrees cloud service.
nativeModelLookupConsole How to get device details from a native model name using the 51Degrees cloud service.
metaDataConsole Demonstrates how to access meta-data relating to the properties that device detection can populate.
failureToMatch Demonstrates the functionality available when device detection is unable to identify the details of the device.
userAgentClientHints-Web Legacy example. Retained for the associated automated tests. See GettingStarted-Web instead.

Tests

This repo has tests for the examples. To run the tests, make sure PHPUnit is installed then, in the root of this repo, call:

phpunit --fail-on-warning --display-warnings --log-junit test-results.xml

On-premise device detection

The on-premise implementation of device detection is much faster but requires more memory and processing power than the cloud version. Unfortunately, distributing the on-premise package via composer would require the inclusion of binary executables (.so/.dll) that are not permitted. If you wish to use the on-premise version then you will need to clone the on-premise repository and follow the instructions in the readme to build the required modules. This is a fairly involved process so feel free to contact us if you are having difficulties.

Development

When making changes to this repository, it may be necessary to link to a local development version of pipeline dependencies. For information on this, see Composer local path.

For exmaple, if a development version of 51degrees/fiftyone.pipeline.core was stored locally, the location would be added with:

"repositories": [
	{
		"type": "path",
		"url": "../../path/to/packages/pipeline-php-core"
	}
]

then the dependency changed to:

"51degrees/fiftyone.pipeline.core": "*"