You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel/PHP中如何获取第三方API返回对象中#data属性的值

#号属性的含义

你在调试输出中看到的#data前缀的#并不是属性真实名称的一部分,这是PHP调试输出(包括Laravel默认使用的Symfony VarDumper组件)的固定标识,用来标记该属性是受保护(protected)类型的类属性,该属性的实际名称就是data。
受保护属性不允许类的外部直接访问,所以不能直接通过$object->data的方式读取值。

正确获取值的方法

你可以根据实际情况选择以下三种方案,优先推荐第一种:

  • 方案1:调用类提供的公开访问器(最优)
    正常封装的类都会为内部属性提供公开的读取方法,你可以先查看DataPartInfo类的定义,是否存在getData()之类的公开方法,直接调用即可:

    $data = $response['dataInfo']->getData();
    
  • 方案2:使用Laravel内置辅助函数读取
    Laravel提供的data_get辅助函数已经封装了属性访问的兼容逻辑,可以直接读取受保护属性:

    $data = data_get($response['dataInfo'], 'data');
    
  • 方案3:通过PHP反射手动读取
    如果上述两种方案都不可用,可以通过PHP反射机制强行读取受保护属性:

    $infoObj = $response['dataInfo'];
    $ref = new ReflectionClass($infoObj);
    $dataProp = $ref->getProperty('data');
    $dataProp->setAccessible(true);
    $data = $dataProp->getValue($infoObj);
    

如果拿到的$data是你示例中显示的二进制字符串格式,可以直接用(string)$data转成普通文本格式使用。

内容的提问来源于stack exchange,提问作者testing one

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:15:08