如何从 Laravel 中的 Spatie\Dns\Records\A 对象中提取 IP 地址

Pet*_*Amo 1 php ip dns laravel

我正在使用 Laravel 和Spatie DNS Retriever从域名获取 IP 地址。

\n

这是我的控制器方法:

\n
public function getDomainInfo($domain)\n    {\n        $dns = new Dns();\n        $recordsA = $dns->getRecords($domain, [\'A\', \'CNAME\']);\n\n        // dd($recordsA);\n\n        $ip = $recordsA[0]->ip;\n        dd($ip);\n\n        return view(\'client.domain\', compact(\'records\',\'recordsA\',\'recordsMX\',\'recordsMX\',\'recordsAll\'));\n    }\n
Run Code Online (Sandbox Code Playgroud)\n

我收到此错误:

\n

无法访问受保护的属性 Spatie\\Dns\\Records\\A::$ip

\n

然而,结果将dd($recordsA)其显示为输出:

\n
array:1 [\xe2\x96\xbc // app/Http/Controllers/Client/IpInfoController.php:43\n  0 => Spatie\\Dns\\Records\\A {#294 \xe2\x96\xbc\n    #host: "google.com"\n    #ttl: 418\n    #class: "IN"\n    #type: "A"\n    #ip: "216.239.38.120"\n  }\n]\n
Run Code Online (Sandbox Code Playgroud)\n

那么这里出了什么问题呢?这种情况下如何获取ip值呢?

\n

我也尝试过这样获取 ip 值,但没有成功:

\n

dd($recordsA[0][\'ip\']);

\n

并返回此错误:

\n

无法将 Spatie\\Dns\\Records\\A 类型的对象用作数组

\n

Kam*_* KB 5

array:1 [\xe2\x96\xbc // app/Http/Controllers/Client/IpInfoController.php:43\n  0 => Spatie\\Dns\\Records\\A {#294 \xe2\x96\xbc\n    #host: "google.com"\n    #ttl: 418\n    #class: "IN"\n    #type: "A"\n    #ip: "216.239.38.120"\n  }\n]\n
Run Code Online (Sandbox Code Playgroud)\n

您可以通过作为函数调用来获取它,例如:

\n
public function getDomainInfo($domain)\n{\n   $dns = new Dns();\n   $recordsA = $dns->getRecords($domain, ['A', 'CNAME']);\n   \n   $ip = $recordsA[0]->ip();\n   $host = $recordsA[0]->host();\n   dd($ip, $host);\n\n   return view('client.domain', compact('records','recordsA','recordsMX','recordsMX','recordsAll'));\n}\n
Run Code Online (Sandbox Code Playgroud)\n