layershifter/TLDDatabase

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# DEPRECATED

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

<!-- Logo -->
<p align="center">
    <img height="128" width="128" src="https://github.com/layershifter/TLDDatabase/raw/master/logo.png">
</p>

<!-- Name -->
<h1 align="center">
  TLDDatabase
</h1>

<!-- Badges -->
<p align="center">
  <a href="https://packagist.org/packages/layershifter/tld-database">
    <img alt="Packagist.org" src="https://poser.pugx.org/layershifter/tld-database/v/stable" />
  </a>
  <a href="https://travis-ci.org/layershifter/TLDDatabase">
    <img alt="Build Status" src="https://travis-ci.org/layershifter/TLDDatabase.svg" />
  </a>
  <a href="https://codeclimate.com/github/layershifter/TLDDatabase">
    <img alt="Code Climate" src="https://codeclimate.com/github/layershifter/TLDDatabase/badges/gpa.svg" />
  </a>
  <a href="https://codecov.io/gh/layershifter/TLDDatabase">
    <img alt="codecov" src="https://codecov.io/gh/layershifter/TLDDatabase/branch/master/graph/badge.svg" />
  </a>
</p>

Abstraction layer for [Public Suffix List](https://publicsuffix.org/) in PHP.
Used by [TLDExtract](https://github.com/layershifter/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.
```php
$store = new \LayerShifter\TLDDatabase\Store();
```

For check existence of entry in database you need use `isExists` method:
```php
$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:
```php
$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.
```php
$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.
```php
$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 :wink: So, you can use `Update` class.
```php
$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.

```php
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

``` bash
$ composer require layershifter/tld-database
```

## Testing
``` bash
$ composer test
```

## Versioning

Library uses [SemVer](http://semver.org/) 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](CONTRIBUTING.md) and [CONDUCT](CONDUCT.md) for details.

## License

This library is released under the Apache 2.0 license. Please see [License File](LICENSE) for more information.

[PSR-1]: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md
[PSR-2]: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md
[PSR-4]: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md