我想问一下ZF2中exchangeArray()和populate()方法的区别,我应该如何使用它们。
根据ZF2文件:
的Zend \ STDLIB \保湿\ ArraySerializable
遵循ArrayObject的定义。对象必须实现 exchangeArray()或populate()方法支持水合作用,和 getArrayCopy()方法支持提取。
但目前还不清楚如何使用它们。
答案 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;
}
}
在这里,我们不会丢失数据,只会创建新条目或覆盖现有值。