迭代 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 参数的请求。
据我所知,有一种方法可以像这样迭代官方 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 参数的请求。