我正在与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相关问答推荐

419注册期间Laravel 11中的错误

Woocommerce自定义变体html表仅显示带值的列

PHP cUrl扩展与v8.2.12更新损坏

PHP DateInterval天数不一致

Msgraph-sdk-php v2如何从返回对象中获取数据?

如何显示每个分类的当前术语的帖子中包含的前20个标签,不包括标签分类

将日期数组排序为年->;月

有没有可能从composer 过时的输出中隐藏不需要的主要版本?

删除了数组中的值,而不是多个数组

WooCommerce中基于用户角色的不同产品差价

在WordPress中从CPT中删除插件

Symfony Validator:如何使用XML表示法验证深度嵌套的数据?

如何在laravel中添加延迟?

WooCommerce 中一件免费产品的数量折扣

调度程序不发送任何消息

PHP向API发送curl请求

在WooCommerce可变产品中显示所选变体的自定义字段

PHP Loop 在迭代中使用修改后的数据

Php 的新WeakMap - 枚举曾经被垃圾收集过吗?

mysql / sql修复多对多数据库中的行