我正在使用 Laravel 和 Spatie DNS Retriever 从域名获取 IP 地址。
这是我的控制器方法:
public function getDomainInfo($domain)
{
$dns = new Dns();
$recordsA = $dns->getRecords($domain, ['A', 'CNAME']);
// dd($recordsA);
$ip = $recordsA[0]->ip;
dd($ip);
return view('client.domain', compact('records','recordsA','recordsMX','recordsMX','recordsAll'));
}
我收到此错误:
无法访问受保护的属性 Spatie\Dns\Records\A::$ip
但是
dd($recordsA)
的结果将其显示为输出:
array:1 [▼ // app/Http/Controllers/Client/IpInfoController.php:43
0 => Spatie\Dns\Records\A {#294 ▼
#host: "google.com"
#ttl: 418
#class: "IN"
#type: "A"
#ip: "216.239.38.120"
}
]
那么这里出了什么问题呢?这种情况下如何获取ip值呢?
我也尝试过这样获取 ip 值,但没有成功:
dd($recordsA[0]['ip']);
并返回此错误:
无法将 Spatie\Dns\Records\A 类型的对象用作数组
array:1 [▼ // app/Http/Controllers/Client/IpInfoController.php:43
0 => Spatie\Dns\Records\A {#294 ▼
#host: "google.com"
#ttl: 418
#class: "IN"
#type: "A"
#ip: "216.239.38.120"
}
]
您可以通过调用函数来获取它,例如:
public function getDomainInfo($domain)
{
$dns = new Dns();
$recordsA = $dns->getRecords($domain, ['A', 'CNAME']);
$ip = $recordsA[0]->ip();
$host = $recordsA[0]->host();
dd($ip, $host);
return view('client.domain', compact('records','recordsA','recordsMX','recordsMX','recordsAll'));
}