使用PHP,如何访问从Stripe API返回的受保护的_值属性?

使用PHP,如何访问从Stripe API返回的受保护的_值属性?,php,stripe-payments,Php,Stripe Payments,我正在集成CMS。我需要将查询中的\u values属性作为数组返回,以便数据在CMS中作为模板变量可用,但它始终受到保护 我一直使用a来获取数据,但是现在我使用Stripe,我必须调用我编写的快捷方法来多次处理反射类。但它并不是完全递归的,因为我必须根据从stripeapi调用的方法的不同来处理它 有没有一种方法可以真正递归地使用反射类?还有什么比反射类更适合我的吗 下面是一个示例var_dump()ed响应\Stripe\Plan::all(): 您不必使用反射API,Stripe\Col

我正在集成CMS。我需要将查询中的
\u values
属性作为数组返回,以便数据在CMS中作为模板变量可用,但它始终受到保护

我一直使用a来获取数据,但是现在我使用Stripe,我必须调用我编写的快捷方法来多次处理反射类。但它并不是完全递归的,因为我必须根据从stripeapi调用的方法的不同来处理它

有没有一种方法可以真正递归地使用反射类?还有什么比反射类更适合我的吗


下面是一个示例
var_dump()
ed响应
\Stripe\Plan::all()


您不必使用反射API,
Stripe\Collection
类实现,您可以直接对其进行迭代:

$collection = \Stripe\Plan::all();
foreach ($collection as $plan) {
    // Do something with the plan
}
集合
类扩展的基类。Stripe的PHP库中的几乎所有类都是如此,包括
Stripe\Plan
。因此,您可以使用任何类型的递归,您将使用普通数组

如果要将
\u values
属性作为数组返回,可以使用以下方法:


true
参数是一个递归选项。

要添加到Victor Stanciu的答案中,如果只想访问
\u值数组的某些元素,可以使用动态属性

例如,如果要访问数据,可以通过以下方式执行:

$collection = \Stripe\Plan::all();
$plans = $collection->data;
然后,类似地,您可以从每个平面检索任何数组元素:

foreach ($plans as $plan) {
    print $plan->name;
}

我将此代码用于Stripe API版本3。

它实现了对值的迭代,而不是对选项的迭代?OP询问的是如何访问
\u values
属性,而不是
\u opts
。类使用
\u values
属性实现
ArrayAccess
:噢,我的错!。很抱歉你是对的,你的答案将解决问题。我将尝试一下(希望明天)并向你汇报。谢谢如果您不想递归,只想在特定路径上获取特定值,该怎么办?我对该库一无所知,但是,除非该类是
final
,否则您应该能够扩展它并编写自己的getter。@lvaroG.Vicario API将从
Plan::all()返回该类
没有办法轻易地覆盖这种行为。。。
$collection = \Stripe\Plan::all();
$plans = $collection->data;
foreach ($plans as $plan) {
    print $plan->name;
}