Яка різниця між 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')тоді? :-) (чудово, якщо ви додасте цей конкретний пункт у своїй відповіді)