Różnica między setData () a addData ()


15

Jaka jest różnica między setData()i addData()? Czy istnieje połączenie, jeśli zaktualizuję produkt lub ustawię nowy?

Odpowiedzi:


32

setDataprzesłania istniejące dane i może otrzymać jako parametr albo parę klucz-wartość albo tablicę.
jeśli ustawisz jako parametry, wówczas para klucz-wartość stanie $_data[key]się value. Jeśli ustawisz jako parametr, tablica $_datastaje się tablicą, która zastępuje to, co poprzednio zawierała.
Przykład:

$_data = array('k1' => 'v1' , 'k2' => 'v2');

wywoływanie $obj->setData('k3','v3')wyników w

$_data = array('k1' => 'v1' , 'k2' => 'v2', 'k3'=>'v3');

wywoływanie $obj->setData(array('k3'=>'v3'))wyników w

$_data = array('k3'=>'v3');

wywoływanie $obj->setData('k2','v2000')wyników w

$_data = array('k1' => 'v1' , 'k2' => 'v2000')

wywoływanie $obj->setData(array('k2'=>'v2000'))wyników w

$_data = array('k2'=>'v2000');

addData otrzymuje jako parametr tylko tablicę i łączy tę tablicę z istniejącymi danymi.

Przykład:

$_data = array('k1' => 'v1' , 'k2' => 'v2');

wywoływanie $obj->addData(array('k3'=>'v3'))wyników w

$_data = array('k1' => 'v1' , 'k2' => 'v2', 'k3'=>'v3');

ale wywoływanie $obj->addData(array('k2'=>'v2000'))powoduje

$_data = array('k1' => 'v1' , 'k2' => 'v2000');

co się wtedy stanie $obj->setData('k2'=>'v2399393')? :-) (świetnie, jeśli dodasz ten konkretny punkt w swojej odpowiedzi)
Rajeev K Tomy

@RajeevKTomy. Gotowy.
Marius

Przepraszam, mogę cię zagłosować tylko raz :-)
Rajeev K Tomy

twoja aktualizacja jest inna. Pominąłeś powyższą prośbę. Zapytałem $obj->setData('k2'=>'v2399393')i nie$obj->setData(array('k2'=>'v2000'))
Rajeev K Tomy

@RajeevKTomy. Czy to żart?
Marius

7

setData ()

funkcja jest only set one field value on one call. może set multiple field value using multiple call of setData function.

Funkcja addData () toset multiple field values using array with array key as field index.

Przykład:

Chcesz ustawić dwa pola w obiekcie.

  • pole a> Wartość-> X
  • pole b> Wartość-> Y

Jeśli używam setData(), musisz wykonać tego typu prace. Potrzebne Dla dwóch pól musisz wywołać funkcję setData dwa mądre.

$ObVarien->setData('fieldA',$X);
$ObVarien->setData('fieldB',$Y);

Ale jeśli używam, addData()możesz to zrobićarray key as field name

$Data=array('fieldA'=>$X,'fieldb'=>$Y)

$ObVarien->addData($Data)

addData () i setData () to dwie biblioteki Varien_Object funkcje klasy .

addData () przy użyciu setData () w pliku lib dla ustawienia wartości pola za pomocą pętli.

public function addData(array $arr)
{
    foreach($arr as $index=>$value) {
        $this->setData($index, $value);
    }
    return $this;
}

4
Możesz użyć, setDataaby ustawić więcej niż jedno pole za pomocą jednego połączenia.
Marius

@Marius mam sprawdzić klasę lib. a ty odpowiadasz jaśniej niż ja
Amit Bera
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.