Klonlanan nesne tek dosya tanıtıcısı kullanmalısınız ya da her biri kendi vardır?

1 Cevap php

Varolan bir web aracı için bir veri dosyasını ayrıştırır bir sarıcı üzerinde çalışıyorum. Ben küçük parçalar halinde bunu yükleme yoluyla yürümek zorunda belleğe şeyi yüklenemiyor böylece Ancak, ben büyük veri dosyalarını kullanıyorum. Varolan web aracı ($ obj-> parentNode-> childNode-> childNode bir dize ya da bazı tür bir düğüm nesnesi döndürür) SimpleXML benzer bir tarzda verileri bekliyor. Neyse yapısı XML benzer ancak sözdizimi garip. Ve ben sırf hafifletici koşullar aklı başında bir biçime çevirmek olamaz. Yani anında onu taklit etmek zorunda.

Ben dosyası üzerinden yürürken ben bütün ağaç, geçerli düğümün sadece alt düğüm isimleri ayrıştırmak gerek olmayacak. Her alt-düğüm adı ve ofset için ilişkili üst düğüm saklanır. Bir alt düğüm içerikleri üst düğüm nesne klonlanmış olacaktır sonra erişilebilir gerekiyorsa, değerler güncellenir ofset ve alt düğüm nesne istenen alt düğüm bulana kadar onun içeriği ayrıştırma başlayacak.

Ben sorular şunlardır:

  • Üst düğüm nesnesi Klonlama çocuk klonları dosya tanıtıcısı verecektir. Tüm klonlar gerekirse dosya etrafında atlamak için aynı tanıtıcı ve kullanım fseek kullanmak (ve eğer oldukça büyük) gerekir?
  • Ben dosyayı kapatmak gerekir mi? Veya komut dosyası yürütme sonunda çöp toplama kapanacak? Ben yapmazsam ne tehlikeler ben karşılaşıyorlar?
  • Her klon için kolları oluşturmak gerekir, ya da ben onları bir paylaşım ile sopa gerekir? Böylece bir üst sınır var ise?
  • Orijinal nesnesine bir başvuru tutmak için bir klonlanmış nesnesi için bir yolu var mı? Ben nesne yıkıcı kolu yakın koyarak ediyorsam nesnenin bir klonu olup olmadığını ben muhtemelen yakın olmamalıdır. Ve yukarı takip edememek muhtemelen, kullanışlı gelebilir.

1 Cevap

Eğer __clone yöntemini uygulamak Eğer bir klon olarak flaggin bir özellik ayarı ve ya ebeveyn tutan bir özelliğini ayarlayarak gibi bir nesne klonlama ne zaman istersen yapabilirsin.

edit:

public function __clone()
{
  $clone = clone $this;
  $clone->isCloned = true;
  $clone->parent = $this;
  $clone->resource = $this->resource; // i dont think resources are copied be default
  // additional property transference
  return $clone;
}