【发布时间】:2016-06-17 13:02:51
【问题描述】:
我目前正在与 Stripe 集成,在更新现有订阅之前,我需要检索所有现有订阅以找到正确的订阅 ID。
但是,当我使用 Stripe PHP 库时,我似乎无法遍历实际的订阅集合。
这是我检索订阅集合的方式:
$subscriptions = $customer->subscriptions->all();
这个我也试过了,应该是一样的,对最终结果似乎没有什么影响:
$subscriptions = \Stripe\Customer::retrieve( $customer->id )->subscriptions->all();
为了理智,在获得订阅集合后,我在上面echo count() 看看它包含多少元素:
echo count( $subscriptions ); // echos '1' which is what I expect.
当我 print_r() 整个 $subscriptions 对象时,我确实看到了一个现有的订阅,所以我已经验证它已被检索到。
然后我想用foreach 简单地遍历集合。这应该是可能的,因为StripeObject(返回集合的基类)实现了ArrayAccess:
foreach( $subscriptions as $subscription )
{
print_r( $subscription );
}
但是,这不会产生任何结果。
如何正确迭代 Stripe 订阅集合?
【问题讨论】:
-
$subscriptions 是 StripeList 对象,$subscriptions->data 是实际数组
-
不,不是。这是一个
Collection->ApiResource->StripeObject,它实现了ArrayAccess。除此之外,data是protected。 -
测试迭代 $subscriptions->data 当你 print_r 它会显示为受保护但仍然可以访问。
-
嗯。这似乎行得通。很混乱。他们确实需要在他们的 API 文档中提供示例,而不仅仅是列出那些 JSON 转储。谢谢你把你的大脑借给我。如果您将其添加为答案,我会认为它是正确的。
标签: php stripe-payments