Fonksiyon refrence yararı nedir?

3 Cevap

Ben CodeIgniter kodunu okurken, ben aşağıdaki gibi yazılmış bazı fonksiyonları bulundu:

function &get_instance()
{
   global $CI, $OBJ;

   if (is_object($CI))
   {
       return $CI;
   }

   return $OBJ->load;
}

Ben değişken refrence anlayabiliyorum, ama ben pek bu tarz işlev? Ve herhangi bir yarar kullanmak için gerekli onu through.Is alabilirim?

Teşekkürler.

3 Cevap

PHP'nin sözdizimi, bu işlev yerine bir değeri bir başvuru verir demektir. Örneğin:

<?php

$foo = 'foo';

function & get_foo_ref ()
{
    global $foo;
    return $foo;
}

// Get the reference to variable $foo stored into $bar
$bar = & get_foo_ref();
$bar = 'bar';

echo $foo; // Outputs 'bar', since $bar references to $foo.

?>

Yukarıdaki örnekte, ve kaldırma fonksiyonu ilanından itibaren $ foo değişkeni hala sadece değeri değil referans işlevi döndü, 'foo' içeren yapacak.

Onların referans nesneleri geçirmek ve bunları yerine klonlanmış değil çünkü bu, PHP4 daha sık kullanılmıştır. Bu nedenle, nesne değişkenleri istenmeyen klonlama önlemek için referans olarak kabul edilmesi gerekiyordu. Bu PHP5'ta artık bir durumdur ve referanslar bu amaç için kullanılmamalıdır.

Ancak, başvuruları dönmek fonksiyonları (nesne başvurularını değiştirilmesi için kullanılan zaman değil, ya da kötü uygulama) tamamen ya da yararsız değildir. Bana bu değer ayarlanır ve değerini okumak için izin bu yolda değişkene başvuru döndüren bir işlevi, bir "yol" geçen bir senaryo oluştururken Örneğin, şahsen ben onları kullandım. Nedeniyle fonksiyonun özyinelemeli doğası, başvuru dönen ihtiyaç vardı.

Bu bir değişken değil, değerin kendisi için bir başvuru döndürmek istediğinizde aslında bu "tarz" gereklidir, değişken referans olarak aynı kavramdır.

Burada kılavuzda açıklanmıştır: http://www.php.net/manual/en/functions.returning-values.php

hayır, fayda var. Bu PHP4 için gerekli olduğunu, ama php5 de kötü bir uygulamadır.