PHP ilkel veri türleri referans olarak geçirilir?

5 Cevap php

PHP, sık sık dize işleme sürü yapıyorum. Dizeleri gibi ilkel türleri değer geçirilir eğer performansını önemli ölçüde etkileyen olacak çünkü, birden fazla fonksiyonları içine benim kod bölmek sakınca var.

5 Cevap

Sadece nesneler başvuruya göre iletilir.

Bu olsa başvuruları değiştirerek bir performans artışı elde edeceğiz anlamına gelmez - PHP kopya-on-write kullanır, böylece değişken değiştirirseniz bir kopya sadece yapılır.

Splitting your code into functions won't slow it down from that point of view. There is a small overhead for calling a function, but unless your in a loop calling 10,000s of them it's probably not something you need to worry about.

Nesnelerine başvuru tarafından geçirilir. Açıkça kullanmadığınız sürece her şeyin değeri tarafından geçirilir pass-by-reference with the & operator.

Söyleniyor, PHP de copy-on-write gereksiz kopyalamayı önlemek için kullanır.

Açıkça (parametre önünde bir işareti & ile) referans olarak geçmek veya argüman önünde bir işareti ile işlevini çağırmak için fonksiyon tanımlamak sürece evet, ilkel değer geçirilir. (Bu ikinci önerilmiyor)

this part of the documentation daha fazla bilgi için bkz.

DÜZENLEME

Genellikle çoğu amaç için bu şekilde düşünülebilir olsa da, PHP "nesnelerine başvuru tarafından geçirilen" ifadesi, bir sadeleştirme biraz. Bu chapter of the documentation farkları açıklar.

Referans geçirerek aslında PHP değer geçirerek daha yavaştır. Ben bu iddianın doğru alıntıyı bulamıyorum; Bu PHP kılavuzun "Başvurular" bölümünde bir yerde bulunuyor.

Varsayılan olarak, her şeyin değeri tarafından geçirilir. Başvuruyla şey geçmek isterseniz olarak açıkça yüzden devlet var.

İşte php documentation that explicitly states this behavior olduğunu.