我正在与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'));
    }

我得到了这个错误:

Cannot access protected property 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']);

And returns this error:

Cannot use object of type Spatie\Dns\Records\A as array

推荐答案

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'));
}

Php相关问答推荐

从含有特殊字符的ANSI文本文件中读取数据是在移值,为什么?

RediSearch PHP希望我在每次使用时定义所有字段

在WooCommerce中禁用特定日期之前的免费送货

在WooCommerce产品变体SKU字段旁边添加自定义输入字段

为什么在我的PHP联系人脚本中开机自检后出现未定义变量错误?

如何在laravel中使用script type= text/html/script

哪里的表现能更好?

根据类别的数量折扣更改WooCommerce购物车商品价格

如何在 apache Laragon - laravel 10 中允许方法 DELETE?

WooCommerce 回购自定义插件:如何更新用户钱包?

Laravel 发送邮箱问题 Swift_TransportException

自定义主键值未正确显示

Symfony 迁移判断器在我的工作中失控

Laravel 测试 assertJsonMissing 不适用于唯一的键.为什么?

输出每个可能的产品选项

hasOne/belongsToMany 或多对多

在 foreach 循环中重命名 PHP 对象属性

表单操作未触发,而是重定向到 php 脚本

stream_get_line 如何设置它开始读取文件的位置?

Composer 在 cpanel 中更新时出现 Composer 错误