Documentation

Resolver
in package
implements ResolverInterface

FinalYes
Tags
see
ResolverInterface

for the base interface

Table of Contents

Interfaces

ResolverInterface

Properties

$executor  : mixed

Methods

__construct()  : mixed
resolve()  : PromiseInterface<string|int, string>
Resolves the given $domain name to a single IPv4 address (type `A` query).
resolveAll()  : PromiseInterface<string|int, array<string|int, mixed>>
Resolves all record values for the given $domain name and query $type.
filterByField()  : mixed
filterByName()  : mixed
filterByType()  : mixed
mapRecordData()  : mixed
valuesByNameAndType()  : array<string|int, mixed>

Properties

Methods

resolve()

Resolves the given $domain name to a single IPv4 address (type `A` query).

public resolve(mixed $domain) : PromiseInterface<string|int, string>
$resolver->resolve('reactphp.org')->then(function ($ip) {
    echo 'IP for reactphp.org is ' . $ip . PHP_EOL;
});

This is one of the main methods in this package. It sends a DNS query for the given $domain name to your DNS server and returns a single IP address on success.

If the DNS server sends a DNS response message that contains more than one IP address for this query, it will randomly pick one of the IP addresses from the response. If you want the full list of IP addresses or want to send a different type of query, you should use the resolveAll() method instead.

If the DNS server sends a DNS response message that indicates an error code, this method will reject with a RecordNotFoundException. Its message and code can be used to check for the response code.

If the DNS communication fails and the server does not respond with a valid response message, this message will reject with an Exception.

Pending DNS queries can be cancelled by cancelling its pending promise like so:

$promise = $resolver->resolve('reactphp.org');

$promise->cancel();
Parameters
$domain : mixed
Return values
PromiseInterface<string|int, string>

resolveAll()

Resolves all record values for the given $domain name and query $type.

public resolveAll(mixed $domain, mixed $type) : PromiseInterface<string|int, array<string|int, mixed>>
$resolver->resolveAll('reactphp.org', Message::TYPE_A)->then(function ($ips) {
    echo 'IPv4 addresses for reactphp.org ' . implode(', ', $ips) . PHP_EOL;
});

$resolver->resolveAll('reactphp.org', Message::TYPE_AAAA)->then(function ($ips) {
    echo 'IPv6 addresses for reactphp.org ' . implode(', ', $ips) . PHP_EOL;
});

This is one of the main methods in this package. It sends a DNS query for the given $domain name to your DNS server and returns a list with all record values on success.

If the DNS server sends a DNS response message that contains one or more records for this query, it will return a list with all record values from the response. You can use the Message::TYPE_* constants to control which type of query will be sent. Note that this method always returns a list of record values, but each record value type depends on the query type. For example, it returns the IPv4 addresses for type A queries, the IPv6 addresses for type AAAA queries, the hostname for type NS, CNAME and PTR queries and structured data for other queries. See also the Record documentation for more details.

If the DNS server sends a DNS response message that indicates an error code, this method will reject with a RecordNotFoundException. Its message and code can be used to check for the response code.

If the DNS communication fails and the server does not respond with a valid response message, this message will reject with an Exception.

Pending DNS queries can be cancelled by cancelling its pending promise like so:

$promise = $resolver->resolveAll('reactphp.org', Message::TYPE_AAAA);

$promise->cancel();
Parameters
$domain : mixed
$type : mixed
Return values
PromiseInterface<string|int, array<string|int, mixed>>

filterByField()

private filterByField(array<string|int, mixed> $answers, mixed $field, mixed $value) : mixed
Parameters
$answers : array<string|int, mixed>
$field : mixed
$value : mixed

filterByName()

private filterByName(array<string|int, mixed> $answers, mixed $name) : mixed
Parameters
$answers : array<string|int, mixed>
$name : mixed

filterByType()

private filterByType(array<string|int, mixed> $answers, mixed $type) : mixed
Parameters
$answers : array<string|int, mixed>
$type : mixed

mapRecordData()

private mapRecordData(array<string|int, mixed> $records) : mixed
Parameters
$records : array<string|int, mixed>

valuesByNameAndType()

private valuesByNameAndType(array<string|int, Record$answers, string $name, int $type) : array<string|int, mixed>
Parameters
$answers : array<string|int, Record>
$name : string
$type : int
Return values
array<string|int, mixed>

        
On this page

Search results