如何在PHP中获取Coinbase API返回的私有属性值?
解决Coinbase PHP SDK中Money对象私有属性无法访问的问题
嘿,我之前在用Coinbase PHP SDK开发时也碰到过一模一样的问题!别慌,这是因为SDK里的Coinbase\Wallet\Value\Money类采用了面向对象的封装设计,私有属性不能直接访问,但官方已经给我们提供了安全合规的访问方式。
正确姿势:使用类提供的公共Getter方法
这个Money类专门暴露了两个公共方法来获取内部的私有属性,你只需要把直接访问属性的代码替换成:
// 获取金额数值 $var1 = $btcusdsellprice->getAmount(); // 获取货币类型 $currency = $btcusdsellprice->getCurrency();
为什么不能直接访问私有属性?
SDK的设计遵循了封装原则,把属性设为私有是为了避免外部随意修改内部数据,保证数据的一致性和安全性。对应的Getter方法是官方推荐的访问方式,你可以参考这个类的核心结构:
namespace Coinbase\Wallet\Value; class Money { private $amount; private $currency; public function __construct($amount, $currency) { // 属性初始化逻辑 } public function getAmount() { return $this->amount; } public function getCurrency() { return $this->currency; } // 其他辅助方法 }
额外技巧:转换成数组(可选)
如果你需要一次性获取所有属性并以数组形式处理,这个类还提供了toArray()方法:
$moneyData = $btcusdsellprice->toArray(); $amount = $moneyData['amount']; $currency = $moneyData['currency'];
不过更推荐使用Getter方法,这是SDK的标准用法,后续版本更新也不会受影响。
⚠️ 注意:别尝试用反射等方式强制访问私有属性,这会破坏封装性,而且SDK版本迭代后很可能导致代码失效。
内容的提问来源于stack exchange,提问作者evenom




