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

如何从Unsplash PHP封装的PageResult对象中取值及遍历?

问题:无法从Unsplash PHP API的返回对象中获取值

我正在尝试使用Unsplash的PHP API,但不知道如何从返回的对象中获取值。

我的代码:

$search = Unsplash\Search::photos($search, $page, $per_page, $orientation);
var_dump($search);

返回结果:

Unsplash\PageResult Object
(
    [resultClassName:Unsplash\PageResult:private] => Unsplash\Photo
    [total:Unsplash\PageResult:private] => 1052
    [totalPages:Unsplash\PageResult:private] => 351
)

我尝试直接取值但无效:

<?php echo $search->total; ?>

想问:这是因为命名空间的反斜杠问题吗?该如何遍历这个对象?是否需要转为数组?


解决方法

首先,不是命名空间的问题,你取不到值是因为这些属性是private(私有)的,PHP不允许外部直接访问类的私有属性。

Unsplash的PHP SDK肯定提供了对应的公共方法(getter)来获取这些值,优先用官方提供的方法:

  • 获取总照片数:$search->getTotal()
  • 获取总页数:$search->getTotalPages()
  • 获取照片结果列表:$search->getResults()(用于遍历照片数据)

实际使用示例:

// 输出总数量
echo $search->getTotal();

// 输出总页数
echo $search->getTotalPages();

// 遍历所有照片结果
foreach ($search->getResults() as $photo) {
    // 获取照片ID
    echo $photo->getId();
    // 获取常规尺寸的照片链接
    echo $photo->getUrl('regular');
}

如果确实需要将对象转为数组(不推荐,优先用SDK方法),可以通过PHP反射机制读取私有属性:

$reflection = new ReflectionClass($search);
$totalProp = $reflection->getProperty('total');
$totalProp->setAccessible(true);
echo $totalProp->getValue($search);

但强烈建议使用SDK提供的公共方法,这样更符合代码规范,也能避免SDK版本更新带来的兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:45:31