Zend Framework2 - exchangeArray()和populate()之间的区别

时间:2015-05-14 13:41:39

标签: zend-framework2

我想问一下ZF2中exchangeArray()和populate()方法的区别,我应该如何使用它们。
根据ZF2文件:

  

的Zend \ STDLIB \保湿\ ArraySerializable

     

遵循ArrayObject的定义。对象必须实现   exchangeArray()或populate()方法支持水合作用,和   getArrayCopy()方法支持提取。

但目前还不清楚如何使用它们。

1 个答案:

答案 0 :(得分:0)

正如文档所指出的那样,如果我们遵循exchangeArray()ArrayObject的定义,它只是将当前数据数组替换为另一个数组。如果在您传入的新阵列中没有再次包含数据,则可能会丢失已存储的数据。

public function exchangeArray($data)
{
    ...

    $storage = $this->storage;

    $this->storage = $data;

    return $storage;
}

要解决此问题,您可以实现populate()功能。一个简单的填充函数可能是:

public function populate($data)
{
    foreach ($data as $key => $var) {
        $this->storage[$key] = $var;
    }
}

在这里,我们不会丢失数据,只会创建新条目或覆盖现有值。