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

问题描述 投票:0回答:1

我正在使用 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 类型的对象用作数组

php laravel dns ip
1个回答
0
投票
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'));
}
© www.soinside.com 2019 - 2024. All rights reserved.