Какая разница между setData()а addData()? Есть ли связь, если я обновляю продукт или устанавливаю новый?
Какая разница между setData()а addData()? Есть ли связь, если я обновляю продукт или устанавливаю новый?
Ответы:
setDataпереопределяет существующие данные и может получить в качестве параметра либо ключ-значение пары, либо массив.
если вы установите в качестве параметров пару ключ-значение, то $_data[key]станет value. Если вы установите в качестве параметра, массив $_dataстановится тем массивом, перезаписывающим то, что он содержал ранее.
Пример:
$_data = array('k1' => 'v1' , 'k2' => 'v2');
вызов $obj->setData('k3','v3')результатов в
$_data = array('k1' => 'v1' , 'k2' => 'v2', 'k3'=>'v3');
вызов $obj->setData(array('k3'=>'v3'))результатов в
$_data = array('k3'=>'v3');
вызов $obj->setData('k2','v2000')результатов в
$_data = array('k1' => 'v1' , 'k2' => 'v2000')
вызов $obj->setData(array('k2'=>'v2000'))результатов в
$_data = array('k2'=>'v2000');
addData получает в качестве параметра только массив и объединяет этот массив с существующими данными.
Пример:
$_data = array('k1' => 'v1' , 'k2' => 'v2');
вызов $obj->addData(array('k3'=>'v3'))результатов в
$_data = array('k1' => 'v1' , 'k2' => 'v2', 'k3'=>'v3');
но вызывая $obj->addData(array('k2'=>'v2000'))результаты в
$_data = array('k1' => 'v1' , 'k2' => 'v2000');
$obj->setData('k2'=>'v2399393')а не$obj->setData(array('k2'=>'v2000'))
SetData ()
функция есть only set one field value on one call. это может set multiple field value using multiple call of setData function.
AddData () функцияset multiple field values using array with array key as field index.
Просто пример:
Вы хотите два поля для установки на объекте.
Если я использую, setData()то вам нужно сделать этот тип works.need Для двух полей вам нужно вызвать функцию setData в двух случаях.
$ObVarien->setData('fieldA',$X);
$ObVarien->setData('fieldB',$Y);
Но если я использую, addData()то вы можете сделать этоarray key as field name
$Data=array('fieldA'=>$X,'fieldb'=>$Y)
$ObVarien->addData($Data)
addData () и setData () являются двумя Varien_Objectфункциями класса библиотеки .
addData () с использованием setData () в файле lib для установки значения поля с помощью цикла.
public function addData(array $arr)
{
foreach($arr as $index=>$value) {
$this->setData($index, $value);
}
return $this;
}
setDataдля установки более одного поля одним вызовом.
$obj->setData('k2'=>'v2399393')то? :-) (замечательно, если вы добавите этот конкретный момент в свой ответ)