使用PHP,我如何访问Stripe API返回的protected _values属性?

时间:2015-04-07 14:50:26

标签: php stripe-payments

我将Stripe API与CMS集成在一起。我需要将查询中的_values属性作为数组返回,以便数据在CMS中作为模板变量可用,但它始终受到保护。

我一直在使用Reflection class来获取数据,但现在我正在使用Stripe的\Stripe\Plan::all();,我必须调用快捷方式I写道多次处理Reflection类。但它并不完全是递归的,因为我必须根据我从Stripe API调用的方法来区别对待它。

有没有办法真正递归地使用Reflection类?是否有一些比我不知道的反思课程更合适?


以下是var_dump()的{​​{1}}样本回复:

\Stripe\Plan::all();

2 个答案:

答案 0 :(得分:15)

您不必使用Reflection API,Stripe\Collection类实现ArrayAccess,您可以直接迭代它:

$collection = \Stripe\Plan::all();
foreach ($collection as $plan) {
    // Do something with the plan
}

HereCollection类扩展的基类。对于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。