28 lines
874 B
PHP
28 lines
874 B
PHP
<?php
|
|
namespace Egulias\EmailValidator\Validation;
|
|
|
|
class DNSGetRecordWrapper
|
|
{
|
|
/**
|
|
* @param string $host
|
|
* @param int $type
|
|
*/
|
|
public function getRecords(string $host, int $type) : DNSRecords
|
|
{
|
|
// A workaround to fix https://bugs.php.net/bug.php?id=73149
|
|
/** @psalm-suppress InvalidArgument */
|
|
set_error_handler(
|
|
static function (int $errorLevel, string $errorMessage): ?bool {
|
|
throw new \RuntimeException("Unable to get DNS record for the host: $errorMessage");
|
|
}
|
|
);
|
|
try {
|
|
// Get all MX, A and AAAA DNS records for host
|
|
return new DNSRecords(dns_get_record($host, $type));
|
|
} catch (\RuntimeException $exception) {
|
|
return new DNSRecords([], true);
|
|
} finally {
|
|
restore_error_handler();
|
|
}
|
|
}
|
|
} |