迭代 Stripe 的 PHP API 包装器返回的计划

Iterating over plans returned by Stripe's PHP API wrapper

据我所知,有一种方法可以像这样迭代官方 Stripe PHP 库返回的集合:

foreach (\Stripe\Plan::all() as $plan) {
    print("$plan->id ($plan->interval)\n");
}

但这不再有效(我在 PHP7 上使用 stripe/stripe-php v3.9.2)。我必须 运行 像这样:

foreach (\Stripe\Plan::all()->__toArray()['data'] as $plan) {
    print("$plan->id ($plan->interval)\n");
}

有没有其他人注意到这个问题?什么改变了?虽然我知道如何让它工作,但它看起来不对。

据我所知,这从来没有奏效。 ::all() 调用 return 不可直接迭代的 Collection 对象(或 1.x 版本中的 Stripe_List 对象)。

迭代调用 ::all() 的结果的正确语法是:

foreach (\Stripe\Plan::all()->data as $plan) {
    // Do something with $plan
}

对于较新的版本 (>= 3.9.0),您可以使用自动分页功能:

foreach (\Stripe\Plan::all()->autoPagingIterator() as $plan) {
    // Do something with $plan
}

这样您就可以自动遍历整个计划列表。绑定将负责在后台为您发出所有带有 pagination 参数的请求。