Різниця між setData () та addData ()


Відповіді:


32

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

@RajeevKTomy. Зроблено.
Маріус

Вибачте, що я можу подати вас лише один раз :-)
Радєєв К Томі

ваше оновлення відрізняється. Ви пропустили вище вказаного запиту. Я запитав $obj->setData('k2'=>'v2399393')і ні$obj->setData(array('k2'=>'v2000'))
Радєєв К Томі

@RajeevKTomy. Це жарт?
Маріус

7

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.

Просто приклад:

Ви хочете встановити на об'єкті два поля.

  • поле a> Значення-> X
  • поле b> Значення-> Y

Якщо я використовую, 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;
}

4
За setDataдопомогою одного дзвінка можна встановити більше одного поля.
Маріус

@Marius У мене є перевірка класу lib. і ви відповідаєте більш чітко, ніж я
Аміт Бера
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.