Bu çok temel bir soru olduğunu fark ama ben bile gerçekten bunu öğrenmek için aramak için bilmiyorum.
$smarty =& SESmarty::getInstance();
& yukarıda için nedir?
Bu referans ile geçer. O geçti değerinin bir kopyasını oluşturmak olmayacak anlamına gelir.
See: http://php.net/manual/en/language.references.php (See Adam's Answer)
Genellikle, böyle bir şey geçmesi halinde:
$a = 5;
$b = $a;
$b = 3;
echo $a; // 5
echo $b; // 3
Orijinal Değişken ($a
) Eğer ikinci değişkeni değiştirirseniz değiştirilmiş olmayacaktır ($b
). Tarafından başvuru geçmesi halinde:
$a = 5;
$b =& $a;
$b = 3;
echo $a; // 3
echo $b; // 3
Orijinal de değiştirilir.
Hangi varsayılan olarak referans olarak kabul edilecektir, çünkü nesnelerin etrafında geçerken işe yaramaz.
PHP4, bu tür (beceriksizce) iki değişken ilişkilidir.
$j = 'original';
$i =& $j;
$i = 'modified';
echo $j; // output is 'modified'
Aynı şekilde ...
$j = 'original';
$i =& $j;
$j = 'modified';
echo $i; // output is 'modified'
Php5 nesnelere gelince bu bazıları daha az tatsız yapıldı, ama bunun kalbi aynı olduğunu düşünüyorum, bu nedenle bu örnekler hala geçerli olmalıdır.
References takma değişkenler için kullanılan ve etkin bir şekilde eski nesne sistemi kullanmak için gerekli idi.
PHP4, nesneler yani atama nesnenin bir kopyasını yaratacak herhangi başka bir değer türü gibi davrandım. Bunu önlemek istiyorsa, size örnek kodda olduğu gibi bir başvuru kullanmak zorunda kaldı.
PHP5 ile, nesne değişkenleri artık nesnenin kendisini içerir, fakat bir kolu (aka nesne tanımlayıcı) ve atama sadece tanıtıcı kopyalar. Bir referans kullanarak artık gerekli değildir.