Zend framework2 Zend Framework2-exchangeArray()和populate()之间的差异
我想了解ZF2中exchangeArray()和populate()方法之间的区别,以及如何使用它们。Zend framework2 Zend Framework2-exchangeArray()和populate()之间的差异,zend-framework2,Zend Framework2,我想了解ZF2中exchangeArray()和populate()方法之间的区别,以及如何使用它们。 根据ZF2文件: Zend\Stdlib\Hydrator\arrayserizable 遵循ArrayObject的定义。对象必须实现 用于支持水合作用的exchangeArray()或populate()方法,以及 getArrayCopy()方法支持提取 但是不清楚如何使用它们。正如文档所指出的,如果我们遵循ArrayObject中exchangeArray()的定义,它只会用另一个数组
根据ZF2文件: Zend\Stdlib\Hydrator\arrayserizable 遵循ArrayObject的定义。对象必须实现 用于支持水合作用的exchangeArray()或populate()方法,以及 getArrayCopy()方法支持提取
但是不清楚如何使用它们。正如文档所指出的,如果我们遵循
ArrayObject
中exchangeArray()
的定义,它只会用另一个数组替换当前的数据数组。如果您要传递的新数组中不再包含已存储的数据,则可能会丢失这些数据
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;
}
}
在这里,我们不会有丢失数据的风险,只会创建新条目或覆盖现有值