PHP’de pointer kullanımı
PHP’de pointer kullanımı oldukça basittir. Pointer’lar bir değişkenin değerini aktarmak ya da kullanmak gerektiğinde bellekten tasarruf etmek ya da işlem sayısını optimize etmek için, o değişkenin değerini referans alarak veya işaret ederek kullanmayı olanaklı kılar
İlk örneğimizde pointer kullanmanın faydalarını işleyeceğiz. İlk önce pointer kullanılmadan yapılmış örneğimizi inceleyelim ;
Sonuçta da görüldüğü gibi işaretçi kullanılmadan yapılacak referans alma ya da değer taşıma işlemlerinde ana değişkenin değerinin değişimi ikinci değişkene etki etmeyecektir. İşaretçi kullanılarak ise;
Sonuçtan da görüleceği üzere işaretçi kullanılarak ana değişkenin($deneme) değerine işaret eden ikinci değişkenimiz($tasi), ana değişkenin yaşadığı değişimlerden etkilenmiştir, aslında burada $tasi değişkeninin görevi $deneme alanında tutulan veriye işaret etmektir.
Sıradaki örnekte ise işaretçilerin fonksiyon içerisinde kullanımını inceleyeceğiz;
Görüldüğü gibi işleme tabii tutulacak değişken fonksiyona işaretçi ile gönderildiği zaman ekstra değişken ve return işlemleriyle uğraşmaya gerek kalmamaktadır. Fonksiyon bizzat işaret edilen değişkene işlemleri uygular.
Kaynak Baturay DAYLAK
<?php
$anaDegisken = "Ana değişken";
echo "<b>Birinci değişkenin değeri:</b> $anaDegisken";
$isaret = $anaDegisken;
echo "<br><b>Birinci değişkenden kopyalanmış ikinci değişken:</b> $isaret";
$anaDegisken = "Değiştirildi";
echo "<br><b>Birinci değişken değiştirildi:</b> $anaDegisken";
echo "<br><b>Birinci değişken değiştirildikten sonra kopya değişkenin değeri:</b> $isaret";
?>
$anaDegisken = "Ana değişken";
echo "<b>Birinci değişkenin değeri:</b> $anaDegisken";
$isaret = $anaDegisken;
echo "<br><b>Birinci değişkenden kopyalanmış ikinci değişken:</b> $isaret";
$anaDegisken = "Değiştirildi";
echo "<br><b>Birinci değişken değiştirildi:</b> $anaDegisken";
echo "<br><b>Birinci değişken değiştirildikten sonra kopya değişkenin değeri:</b> $isaret";
?>
Sonuçta da görüldüğü gibi işaretçi kullanılmadan yapılacak referans alma ya da değer taşıma işlemlerinde ana değişkenin değerinin değişimi ikinci değişkene etki etmeyecektir. İşaretçi kullanılarak ise;
<?php
$deneme = "Bir değişken";
echo "<b>deneme değişkeninin değeri :</b> $deneme<br>";
$tasi = &$deneme;
echo "<b>tasi işaretçisinin değeri:</b> $tasi<br>";
$deneme = "gmm";
echo "<b>deneme değişkeninin değeri değiştirildi:</b> $deneme<br>";
echo "<b>bakalim tasi işaretçisi ne oldu :</b>$tasi";
?>
$deneme = "Bir değişken";
echo "<b>deneme değişkeninin değeri :</b> $deneme<br>";
$tasi = &$deneme;
echo "<b>tasi işaretçisinin değeri:</b> $tasi<br>";
$deneme = "gmm";
echo "<b>deneme değişkeninin değeri değiştirildi:</b> $deneme<br>";
echo "<b>bakalim tasi işaretçisi ne oldu :</b>$tasi";
?>
Sonuçtan da görüleceği üzere işaretçi kullanılarak ana değişkenin($deneme) değerine işaret eden ikinci değişkenimiz($tasi), ana değişkenin yaşadığı değişimlerden etkilenmiştir, aslında burada $tasi değişkeninin görevi $deneme alanında tutulan veriye işaret etmektir.
Sıradaki örnekte ise işaretçilerin fonksiyon içerisinde kullanımını inceleyeceğiz;
<?php
//pointer denemeleri
$d = "Baturay";
$a = &$d;
echo "Pointer ile atanmış değişken <strong>$a</strong><br>";
echo "Kaynak değişken değiştiriliyor...<br>";
$d = "Değiştirdim";
echo "Pointed değişken : <strong>$a</strong><br>";
//pointer ile fonksiyona akmalar
$bu = "Bunu pointer ile değiştireceğim..";
function degistir($giris,$ara,$degis)
{
$giris = str_replace($ara,$degis,$giris);
}
echo "Fonksiyonu çağırmadan önce: <strong>$bu</strong><br>";
degistir($bu,"değiştireceğim","değiştirdim bile");
echo "Fonksiyonu çağırdıktan(pointer kullanmadan) sonra: <strong>$bu</strong><br>";
degistir(&$bu,"değiştireceğim","değiştirdim bile");
echo "Fonksiyonu çağırdıktan sonra: <strong>$bu</strong><br>";
?>
//pointer denemeleri
$d = "Baturay";
$a = &$d;
echo "Pointer ile atanmış değişken <strong>$a</strong><br>";
echo "Kaynak değişken değiştiriliyor...<br>";
$d = "Değiştirdim";
echo "Pointed değişken : <strong>$a</strong><br>";
//pointer ile fonksiyona akmalar
$bu = "Bunu pointer ile değiştireceğim..";
function degistir($giris,$ara,$degis)
{
$giris = str_replace($ara,$degis,$giris);
}
echo "Fonksiyonu çağırmadan önce: <strong>$bu</strong><br>";
degistir($bu,"değiştireceğim","değiştirdim bile");
echo "Fonksiyonu çağırdıktan(pointer kullanmadan) sonra: <strong>$bu</strong><br>";
degistir(&$bu,"değiştireceğim","değiştirdim bile");
echo "Fonksiyonu çağırdıktan sonra: <strong>$bu</strong><br>";
?>
Görüldüğü gibi işleme tabii tutulacak değişken fonksiyona işaretçi ile gönderildiği zaman ekstra değişken ve return işlemleriyle uğraşmaya gerek kalmamaktadır. Fonksiyon bizzat işaret edilen değişkene işlemleri uygular.
Kaynak Baturay DAYLAK
Yorumunuzu Ekleyin