Değer tarafından bir nesneyi kopyalamak için nasıl / PHP 5 nesneyi klonlamak

5 Cevap php

Bu kodu vardır:

foreach ($this->configObjects as $k=>$object)
{
   $configObject=$object;

   //Here I will make a lot of changes to $configObject, however
   // I want all those changes to be kept only to the local copy of $configObject,
   // So the next time this foreach loop is run $this->configObjects array will contain
   // a clean slate of configObject objects which don't have any traces of any 
   // earlier changes that were made to them
}

Bunu nasıl yapabilirsiniz?

5 Cevap

iyi, sadece clone nesne.

Bir kopya kurucu kullanın.

Soru 1: Varsylan her döngü için '$ k => $ nesnesi' haline değeri yerel bir kopyasını yapmak gerekir - bu foreach yerel herhangi bir değişiklik. Bir '&' koyarak referans olarak yerine değeriyle geçecekti. Manual

Soru 2: Eğer nesneyi var_dump miyim? Bir dizi ya da dize içine foreach içinde nesne döküm olmak olun - var_dump gibi, bir dize bir yöntem çağırıyoruz gösteriyorsa.

Klon yapıyı kullanarak veya ikincil atamak için nesnesi üzerinden döngü ya.

Bir foreach döngüsü içinde bir iterable üyelerini değiştiremezsiniz çünkü onu klonlamak zorunda değilsiniz. Böylece gibi bir şey yaptığınızda

$configObject->name = "whatever";

Varsayılan olarak $ this-> configObjects üzerinde herhangi bir etkisi olmayacaktır.

Alıntı PHP page:

Not: Dizi başvurulan olmadıkça, foreach değil dizinin kendisi belirtilen dizinin bir kopyası üzerinde çalışır.