将mage_customer_model_customer对象转换为数组,然后再次转换为对象
-
22-10-2019 - |
题
我已经加密了客户的名称,姓氏和电子邮件,并且需要解密数据以显示前端。
我会覆盖 public function getCustomer()
位于 app/code/core/Mage/Model/Session.php
文件。从中检索的客户数据$customer = Mage::getModel('customer/customer')
->setWebsiteId(Mage::app()->getStore()->getWebsiteId());
$customer->load($this->getId());
更新
我每次使用 print_r($customer)
要打印登录客户的数据,我得到了 Mage_Customer_Model_Customer Object
.
问题
我想用数组替换名称,lastname和电子邮件的解密值 $customer['_origData:protected']
和 $customer['_Data:protected']
由于方法受到保护,因此我已将对象转换为数组并在传递解密函数后再次转换为对象,但是转换后的对象没有受保护的方法。当转换对象传递到功能时,我会遇到致命错误 $this->setCustomer($customer);
我想要的是 在对象中替换三个加密值的名称,姓氏和电子邮件 Mage_Customer_Model_Customer Object
基本问题是: - 如何替换对象中的值?
解决方案
利用 setData($key, $value)
改变 _data
和 setOrigData($key, $value)
改变 _origData
.
另外,而不是 setData('firstname', 'John')
你总是可以写 setFirstname('John')
, ,即使没有声明该方法,也要在 Varien_Object
.
其他提示
我不完全理解您的问题,但是如果您想将数组转换为stdclass实例,这是一种简单的方法。
$arr = YOUR ARRAY HERE;
$encoded = json_encode($arr);
$obj = json_decode($encoded);