Magento可变对象不保存数据


Magento Varien Object not Saving data

我试图在我的地址对象中使用setData。下面是代码:

//code inside another class
$this->getAddress()->setData('abc', 'abc')->collectShippingRates()->save();
class Mage_Sales_Model_Quote_Address extends Mage_Customer_Model_Address_Abstract
{
...
    public function collectShippingRates()
    {
        ...
        $found = $this->requestShippingRates();
        ...
        return $this;
    }
    public function requestShippingRates(Mage_Sales_Model_Quote_Item_Abstract $item = null)
    {
        //I knkow it's getting here, because when I echo 'blablabla', it works.
        //When I use $this->setData('abc', 'abc') here, the code bellow print 'abc'
        //The problem is when I use setData outside the class
        echo $this->getData('abc');exit; //prints nothing
        ...
    }
...
}

可以看到,我在Address模型中设置了setData,但是在类中getData没有返回任何东西。
有人能解释一下发生了什么吗?
当我尝试使用Mage::register时,它也不起作用。

可能的探索途径。

  1. 你对getAddress的调用没有返回Mage_Sales_Model_Quote_Address对象,或者返回一个地址对象的不同实例。

  2. 你对setData('abc', 'abc')的调用发生在Magento的代码执行之后,而不是第一次调用requestShippingRates

  3. 调用getAddress和执行requestShippingRates之间的代码正在重新实例化或初始化地址对象。

根据你对Mage::register的评论,我的钱在第二个。