SetData () ve addData () arasındaki fark


15

Arasındaki fark nedir setData()ve addData()? Bir ürünü güncellersem veya yeni bir ürün ayarlarsam bağlantı olur mu?

Yanıtlar:


32

setDatavar olan verileri geçersiz kılar ve parametre olarak ya bir çift anahtar / değer çiftini bir dizi olarak alabilir.
parametre olarak ayarlarsanız bir çift anahtar / değer çifti $_data[key]olur value. Parametre olarak ayarlarsanız, bir dizi $_datadaha önce içerdiği dizinin üzerine yazılır.
Misal:

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

arama $obj->setData('k3','v3')sonuçları

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

arama $obj->setData(array('k3'=>'v3'))sonuçları

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

arama $obj->setData('k2','v2000')sonuçları

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

arama $obj->setData(array('k2'=>'v2000'))sonuçları

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

addData parametre olarak yalnızca bir diziyi alır ve bu diziyi var olan verilerle birleştirir.

Misal:

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

arama $obj->addData(array('k3'=>'v3'))sonuçları

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

ancak $obj->addData(array('k2'=>'v2000'))sonuçları

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

o zaman ne olur $obj->setData('k2'=>'v2399393')? :-) (cevabınıza bu özel noktayı eklerseniz harika)
Rajeev K Tomy

@RajeevKTomy. Bitti.
Marius

Üzgünüm seni sadece bir kez vurabilirim :-)
Rajeev K Tomy

güncellemeniz farklı. Belirtilen isteğin üzerine atladınız. Ben sordum $obj->setData('k2'=>'v2399393')ve değil$obj->setData(array('k2'=>'v2000'))
Rajeev K Tomy

@RajeevKTomy. Bu bir şaka mı?
Marius

7

setData ()

işlevi only set one field value on one call. olabilir set multiple field value using multiple call of setData function.

addData () işleviset multiple field values using array with array key as field index.

Sadece Örnek:

Nesnede iki alanın ayarlanmasını istiyorsunuz.

  • a alanı> Değer-> X
  • b alanı> Değer-> Y

Eğer i kullanıyorsanız setData()o zaman bu tür işleri yapmanız gerekir. İki alan için setData işlevini akıllıca çağırmanız gerekir.

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

Ama eğer kullanırsam addData()bunu yapabilirsinarray key as field name

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

$ObVarien->addData($Data)

addData () ve setData () , iki Library Varien_Objectsınıfı işlevidir.

döngü kullanarak set alanı değerini ayarlamak için lib dosyasında setData () kullanarak addData () yöntemi.

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

4
setDataBir çağrı ile birden fazla alan ayarlamak için kullanabilirsiniz .
Marius

@Marius lib sınıfını kontrol ettim. ve benden daha net cevap veriyorsun
Amit Bera
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.