代码之家  ›  专栏  ›  技术社区  ›  ruwroveajaic

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

  •  0
  • ruwroveajaic  · 技术社区  · 2 年前

    我和拉拉威尔一起工作 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类型的对象用作数组

    1 回复  |  直到 2 年前
        1
  •  1
  •   Kamran Allana    2 年前
    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'));
    }
    
    推荐文章