ne "&" yok

5 Cevap

I've just inherited this code in PHP which seems to do some kind of web service call to googles api. I'm not quite an expert on PHP and there is a few syntax questions I have specifically relating to the following line $soapClients = &APIlityClients::getClients();

Ben double "::" APIlityClients statik bir sınıf olduğunu belirten gibi anlıyorum ama ne "ve" Emin değilim APIlityClients araçlarının önüne.

5 Cevap

PHP'de bir değişkenin önüne bir ve işareti kullandığınızda, bu değişkenin bir referans oluştururken.

$foo = 'bar';
$baz = &$foo;

echo $foo //bar
echo $baz //bar

$foo = 'foobazbar';
echo $foo //foobazbar
echo $baz //foobazbar

PHP bir sınıftan bir nesne oluştururken önce PHP5, bu nesnenin başka değişkenlere geçmiş olacaktır by value. Nesne (Java, C #, vb) dil odaklı diğer birçok nesne standart olarak, bir referans değildi.

Ancak, bunun önünde bir işareti ile bir sınıf örneklendirerek, size iade nesnesine bir başvuru oluşturabilir ve diğer dillerde bir nesne gibi davranır. Bu etkileri gibi OOP ulaşmak ve / veya performansını artırmak için önce PHP5'ta ortak bir tekniktir.

Bu şey için bir referans almak yerine onun değerini kopyalama PHP'nin sürümüdür. Yani bu durumda & dönüş değeri APIlityClients::getClients() yerine dönüş değerinin kendisinin bir kopyasını bir başvuru almak istiyorum.

& a pass by reference rather than by value gösterir. Bu sınıflar bu sürümünde varsayılan olarak başvuruya göre iletilir beri PHP5'ta çok geçerli değil, ancak önceki sürümlerde değildi etmez.

Bu "adresi" anlamına gelir - ve getClients () çağrısı, değil APllityClients sınıfı kendisini dönen değere atıfta bulunuyor.

Temelde oldukça döndürülen değeri bir kopyasını yapmak daha getClients () döndürülen ne olursa olsun bir referans $ soapClients atamak söylüyor.

& bir referans demektir. Kaynaklar birden fazla değişken aynı nesneye işaret izin vermek için kullanılır.

this page olsa benden daha iyi açıklıyor

Ayrıca http://us3.php.net/manual/en/language.references.php, genel olarak php başvurular hakkında daha fazla bilgi için bkz: