PHP’de Referans(&) Kavramını Anlamak
Php’de temel kavramları ve kullanım şekillerini az çok biliyor olmama rağmen, bu yıl aldığım “Web Programming” dersi münasebetiyle biraz daha ayrıntıya inme ihtiyacı hissettim. Bu sebeple de Php’de referans kavramının kullanım şekillerini dikkatlice araştırdım. İnternet notlarıma eklemeden önce de örneklerle iyice pekiştirdim . Şimdi öğrendiklerimi pekiştirmek için gerçekleştirdiğim örneklerin bir kısmını buraya aktararak, kısaca size de anlatmaya çalışacağım.
Öncelikle C dilindeki pointer kavramını az çok biliyorsanız Php’de referans kavramını anlamak çok zor olmuyor diyebilirim. Kısaca referanslar değişkenlerin değerlerini değil de, adreslerini tutmayı sağlarlar.
- Basit bir örnekle bunu izah edelim.
<html> <body> <?php $var1 = 1; $var2 = $var1; // $var2'in değeri $var1'in değeri olan 1'e sahip olur. $var2 = 2; echo "var1 => " . $var1 . " | " . " var2 => " . $var2; // Çıktısı : var1 => 1 var2 => 2 <hr /> $var2 = &$var1; // $var2 $var1'in adresini tutar, yani $var1'in değerine işaret eder $var2 = 2; // $var2'in işaret ettiği adresteki değer 2 olur. //Bunun anlamı $var2'in olduğu gibi $var1'in de değerinin de 2 olmasıdır. echo "var1 => " . $var1 . " | " . " var2 => " . $var2; // Çıktısı : var1 => 2 var2 => 2 ?> </body> </html>
- Parametreli fonksiyonlarda referans kavramı
<html>
<body>
<?php
function referans_testi(&$var) // Değişkenin adresini alır
{
$var = $var * 2; // Adresin içerisinde bulunan değeri 2 ile çarpar
}
$var2 = 25;
referans_testi($var2);
echo $var2; // Çıktısı: 50
?>
</body>
</html>
Bu örnekte eğer fonksiyon parametresi olarak adres değil de, değişkenin değerini almış olsaydık ne olurdu ?
Fonksiyon içerisindeki değişkenin değerini 2 katına çıkarma işlemi ($var = $var * 2), değişken static olmadığından dolayı ilk değeri olan 25 olarak kalacaktı. (Static değişken nedir öğrenmek için buraya tıklayınız….
