PHP5 referans değişken geçmek için bir ihtiyaç var mı?

3 Cevap php

PHP5 referans bir kazanç daha bir performans ceza daha neden olarak "yazıp kopya" kullanarak ve geçen, neden ben pass-by-reference kullanmalıyım? (Kötü uygulama, biliyorum), ben eksik bunun için bir kullanımı var kim sonra bir dizi işlevi çağrılırken olmadan değiştirilebilir olmasını istediğiniz nitelikleri birden fazla değer veya sınıfları dönecekti geri arama işlevleri dışında?

3 Cevap

Eğer sonucu değiştirmek istediğiniz zaman pass-by-reference kullanmak ve bunun için orada hepsi.

Yanı sıra PHP nesneleri olduğunu hatırlamak always pass-by-reference.

Şahsen ben kopyalama değerler PHP'nin sistem örtülü (ben yanlışlıkla değişiklik karşı savunmak için sanırım) sonra yine muhtemelen açıklıyor kesinlikle yazılı bir dilleri, hantal ve unintuitive ama başladı bulabilirsiniz. Ama ilginç nesneler PHP'nin normal çalışmasına farklı ve PHP "nin örtülü kopyalama mekanizması gerçekten iyi bir sistem olmadığını delil olarak almak bulabilirsiniz.

Bir dizi doldurur recursive fonksiyon? Bir kere, böyle bir şey yazdığımı hatırlamıyorum.

Kısmen dolu bir dizi ve kopyalama, yapıştırma ve her fırsatta parçaları katılma kopya yüzlerce sahip olmanın hiçbir anlamı yok.

Nesneleri bile geçirmeden bir fark var.

Bu örneği deneyin:

class Penguin { }

$a = new Penguin();

function one($a)
{
  $a = null;
}

function two(&$a)
{
  $a = null;
}

var_dump($a);
one($a);
var_dump($a);
two($a);
var_dump($a);

Sonuç şu olacaktır:

object(Penguin)#1 (0) {}
object(Penguin)#1 (0) {}
NULL

Eğer referans olarak bir nesneye bir başvuru içeren bir değişken geçirdiğinizde, nesnesine başvuru değiştirmek edebiliyoruz.