Jaka jest różnica między setData()
i addData()
? Czy istnieje połączenie, jeśli zaktualizuję produkt lub ustawię nowy?
Jaka jest różnica między setData()
i addData()
? Czy istnieje połączenie, jeśli zaktualizuję produkt lub ustawię nowy?
Odpowiedzi:
setData
przesł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 $_data
staje 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');
$obj->setData('k2'=>'v2399393')
i nie$obj->setData(array('k2'=>'v2000'))
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.
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;
}
setData
aby ustawić więcej niż jedno pole za pomocą jednego połączenia.
$obj->setData('k2'=>'v2399393')
? :-) (świetnie, jeśli dodasz ten konkretny punkt w swojej odpowiedzi)