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:
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');
$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;
}
setDataaby 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)