Nasıl 've' yok

3 Cevap php

Ben yazılı ve PHP fonksiyonu ve orijinal yazarın özgün kod yazmıştır değişkenler sürü etrafında oynanan ve ürün ie geliştirmeye devam etmek yaşadım ettik. Joomla Bileşenleri / Modüller / Eklentiler ve ben her zaman bu soru ile geldim:

Nasıl 've' yok sembol bir işleve bağlı veya değişken sonucunu etkileyebilir?

Örneğin:

$variable1 =& $variable2;

VEYA

function &usethisfunction() {
}

VEYA

function usethisfunction(&thisvariable) {
{

Ben PHP kılavuzu ve ilgili diğer kaynaklar aracılığıyla arama denedim ama özellikle benim sorununu bir şey bulamıyorum.

3 Cevap

Bu references olarak bilinir.

İşte bazı "normal" bir PHP kodu bir örnek:

function alterMe($var) {
    $var = 'hello';
}

$test = 'hi';
alterMe($test);
print $test; // prints hi

$a = 'hi';
$b = $a;
$a = 'hello';
print $b; // prints hi

Ve bu başvurular kullanarak elde edebilirsiniz budur:

function alterMe(&$var) {
    $var = 'hello';
}

$test = 'hi';
alterMe($test);
print $test; // prints hello

$a = 'hi';
$b &= $a;
$a = 'hello';
print $b; // prints hello

Işin cesur detayları belgelerinde vardır. Esasen, ancak:

PHP Kaynaklar farklı isimlerle aynı değişken içeriğe erişmek için bir araçtır. Onlar C işaretçileri gibi değil; Bunun yerine, onlar sembol tablosu rumuzudur. PHP, değişken adı ve değişken içeriği farklıdır, bu yüzden aynı içeriğin farklı isimleri olabilir unutmayın. Yakın benzerlik, Unix dosya isimleri ve dosyaları ile - değişken içeriği dosyanın kendisi ise değişken adları, dizin girişleri vardır. Kaynaklar Unix dosya sistemindeki sabit bağlar benzetilebilir.

<?php

$a = "hello";   # $a points to a slot in memory that stores "hello"
$b = $a;    	# $b holds what $a holds

$a = "world";
echo $b;    	# prints "hello"

Şimdi eklemek ve eğer

$a = "hello";   # $a points to a slot in memory that stores "hello"
$b = &$a;   # $b points to the same address in memory as $a

$a = "world";

# prints "world" because it points to the same address in memory as $a.
# Basically it's 2 different variables pointing to the same address in memory
echo $b;    	
?>

Bu bir referanstır. Bu 2 değişken adları aynı içeriğe işaret sağlar.