inbox/tld-database

Database abstraction for Public Suffix List

10.71 2023-02-18 15:14 UTC

README

Please use https://github.com/jeremykendall/php-domain-parser.

TLDDatabase

Packagist.org Build Status Code Climate codecov

Abstraction layer for Public Suffix List in PHP. Used by TLDExtract.

Main idea of library provide easy and fast access to actual database of Public Suffix List. Library always supplied with actual database.

This package is compliant with PSR-1, PSR-2, PSR-4. If you notice compliance oversights, please send a patch via pull request.

Requirements

The following versions of PHP are supported:

  • PHP 5.5
  • PHP 5.6
  • PHP 7.0
  • PHP 7.1
  • HHVM

Basic usage

First of all you need load Store class.

$store = new \LayerShifter\TLDDatabase\Store();

For check existence of entry in database you need use isExists method:

$store->isExists(string $suffix) : bool;

$store->isExists('com'); // true
$store->isExists('comcom'); // false

Note: suffix must be without leading dot.

For get type of suffix you need use getType method:

For check existence of entry in database you need use isExists method:

$store->isExists(string $suffix): int;

$store->getType('com'); // \LayerShifter\TLDDatabase\Store::TYPE_ICANN = 1
$store->getType('s3.amazonaws.com'); // \LayerShifter\TLDDatabase\Store::TYPE_PRIVATE = 2

If entry doesn't exists method will throw exception, else it will return one of integer constants:

  • \LayerShifter\TLDDatabase\Store::TYPE_ICANN;
  • \LayerShifter\TLDDatabase\Store::TYPE_PRIVATE;

For direct check of type you can use isICANN or isPrivate method.

$store->isICANN(string $suffix) : bool;

$store->isICANN'com'); // true
$store->isICANN('s3.amazonaws.com'); // false

$store->isPrivate(string $suffix) : bool;

$store->isPrivate('com'); // false
$store->isPrivate('s3.amazonaws.com'); // true

Advanced usage

There are some cool features for developers.

Custom database

If you need operate with custom (non-packaged) database you simply need to add argument to Store constructor.

$store = new \LayerShifter\TLDDatabase\Store(string $filename);
$store = new \LayerShifter\TLDDatabase\Store(__DIR__ . '/cache/datatabase.php');

Update

If you use custom database you need update it 😉 So, you can use Update class.

$update = new \LayerShifter\TLDDatabase\Update(string $filename);
$update = new \LayerShifter\TLDDatabase\Update(__DIR__ . '/cache/datatabase.php');

$update->run();

HTTP-adapter

Basically library uses cURL adapter for updates, but you can use custom adapter.

class customHttp implements \LayerShifter\TLDDatabase\Http\AdapterInterface {
    public function get() {} 
}

$update = new \LayerShifter\TLDDatabase\Update(__DIR__ . '/cache/datatabase.php', 'customHttp');
$update->run();

Install

Via Composer

$ composer require layershifter/tld-database

Testing

$ composer test

Versioning

Library uses SemVer versioning. Where:

  • major makes incompatible API changes;
  • minor adds functionality, fully backwards-compatible;
  • patch is update of database from Public Suffix List.

Database has every week update cycle.

Contributing

Please see CONTRIBUTING and CONDUCT for details.

License

This library is released under the Apache 2.0 license. Please see License File for more information.