我将Stripe API与CMS集成在一起。我需要将查询中的_values
属性作为数组返回,以便数据在CMS中作为模板变量可用,但它始终受到保护。
我一直在使用Reflection class来获取数据,但现在我正在使用Stripe的\Stripe\Plan::all();
,我必须调用快捷方式I写道多次处理Reflection类。但它并不完全是递归的,因为我必须根据我从Stripe API调用的方法来区别对待它。
有没有办法真正递归地使用Reflection类?是否有一些比我不知道的反思课程更合适?
以下是var_dump()
的{{1}}样本回复:
\Stripe\Plan::all();
答案 0 :(得分:15)
您不必使用Reflection API,Stripe\Collection
类实现ArrayAccess,您可以直接迭代它:
$collection = \Stripe\Plan::all();
foreach ($collection as $plan) {
// Do something with the plan
}
Here是Collection
类扩展的基类。对于Stripe的PHP库中的几乎所有类都是如此,包括Stripe\Plan
。因此,您可以使用与普通数组一起使用的任何类型的递归。
如果要将_values
属性作为数组返回,可以使用__toArray()
方法:
$array = $collection->__toArray(true);
true
参数是一个递归选项。
答案 1 :(得分:0)
要添加到Victor Stanciu的答案中,如果您只想访问_values
数组的某些元素,则可以使用动态属性。
例如,如果要访问数据,可以这样做:
$collection = \Stripe\Plan::all();
$plans = $collection->data;
然后,类似地,您可以从每个计划中检索任何数组元素:
foreach ($plans as $plan) {
print $plan->name;
}
我将此代码用于Stripe API版本3。