- Katılım
- 2 Mar 2015
- Konular
- 59,189
- Mesajlar
- 88,439
- Çözüm
- 109
- Online süresi
- 4mo 16d
- Reaksiyon Skoru
- 14,280
- Altın Konu
- 2,398
- TM Yaşı
- 11 Yıl 3 Ay 6 Gün
- Başarım Puanı
- 1,051
- MmoLira
- 695,092
- DevLira
- 234
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
PHP, bir fonksiyona argüman geçirmek için varsayılan olarak "değere göre çağırma" mekanizmasını kullanır. Fonksiyon içindeki argümanlar değiştirilirse, değişiklikler fonksiyonun dışına yansımaz. Bir fonksiyonun argümanlarını değiştirmesine izin vermek için "referansa göre çağırma" mekanizması kullanılmalıdır.
PHP'de bir referans değişkeni, her ikisinin de tek bir değeri okuyup yazabilmesi için orijinal veya ana değişkene bir "takma ad" görevi görür. Başka bir deyişle, iki farklı isme sahip değişkenler aynı değere erişebilir ve aynı değişkenmiş gibi davranırlar.
Aşağıdaki PHP betiği referansların ne olduğunu anlamanıza yardımcı olacaktır. Burada, $var normal bir dize değişkenidir. $var1'i $var'a bir referans olarak bildiririz , ikincisine "&" sembolü ekleriz.
$var = "Hello";
$var1 = &$var;
$var1 'in $var ' ın bir takma adı veya referansı olduğunu söylediğimizde , bunun değerindeki herhangi bir değişikliğin $var ' ın değerini de değiştireceği ve bunun tersi anlamına gelir.
Örnek
Aşağıdaki örnek, PHP'de "referansla çağırma"nın nasıl çalıştığını göstermektedir.
PHP:
<?php
$var = "Hello";
$var1 = &$var;
$var1 = "Hello World";
echo "var=$var var1=$var1" . PHP_EOL;
$var = "How are you?";
echo "var=$var var1=$var1" . PHP_EOL;
?>
Aşağıdaki çıktıyı üretecektir:
var=Hello World var1=Hello World
var=How are you? var1=How are you?
Bir PHP Fonksiyonunu Referansla Çağırma
Bir fonksiyonu referansla çağırmak için, ismine "&" sembolü eklenmiş resmi argümanları bildirmeniz gerekir.function callref(&$arg1, &$arg2) {
Statements;
}
Fonksiyonun çağrılması "değere göre çağırma" metodundaki gibidir.
callref($x, $y);
Fonksiyon çağrıldığında $arg1 $x'e referans olur ve $arg2 $y'ye referans olur.
Fonksiyon gövdesinin içerisinde $arg1 veya $arg2 (veya her ikisi) değerinin değişmesi, $x ve $y değerlerinin de değişmesine neden olur.
Örnek
Aşağıdaki örneğe bir bakalım:
PHP:
<?php
function change_name(&$nm) {
echo "Initially the name is $nm" . PHP_EOL;
$nm = $nm."_new";
echo "This function changes the name to $nm" . PHP_EOL;
}
$name = "John";
echo "My name is $name" . PHP_EOL;
change_name($name);
echo "My name now is $name" . PHP_EOL;
?>
$name değişkeni change_name() fonksiyonuna geçirilir. Bir referans değişkeni &$nm onun referans değişkeni olur. $ nm'deki herhangi bir değişiklik , fonksiyon dışındaki $name'e yansıtılır.
Aşağıdaki çıktıyı üretecektir:
My name is John
Initially the name is John
This function changes the name to John_new
My name now is John_new
İki Değişkeni Değiştirme
Aşağıdaki PHP kodunda, argümanları değere göre geçirerek bir fonksiyonu çağırıyoruz. Fonksiyon, değerlerini değiştirmeye çalışır.Fonksiyonun içerisinde değerleri değişir, ancak bu değişim fonksiyon çalıştırıldıktan sonra gerçek argümanlara yansımaz.
Aynı fonksiyon argümanları referansla geçirerek çağrıldığında, takas etkisi gerçek argümanlara da yansır.
PHP:
<?php
function swap_value($a, $b) {
echo "Initial values a = $a b = $b \n";
$c = $a; $a = $b; $b = $c;
echo "Swapped values a = $a b = $b \n";
}
$x = 10; $y =20;
echo "Actual arguments x = $x y = $y \n\n";
swap_value($x, $y);
echo "Actual arguments do not change after the function: \n";
echo "x = $x y = $y \n\n";
function swap_ref(&$a, &$b) {
echo "Initial values a = $a b = $b \n";
$c = $a; $a = $b; $b = $c;
echo "Swapped values a = $a b = $b \n";
}
swap_ref($x, $y);
echo "Actual arguments get changed after the function: \n";
echo "x = $x y = $y";
?>
Aşağıdaki çıktıyı üretecektir:
Actual arguments x = 10 y = 20
Initial values a = 10 b = 20
Swapped values a = 20 b = 10
Actual arguments do not change after the function:
x = 10 y = 20
Initial values a = 10 b = 20
Swapped values a = 20 b = 10
Actual arguments get changed after the function:
x = 20 y = 10
Referansla Geri Dön
PHP'deki bir fonksiyon referansla argümanları kabul edebildiği gibi, bir referans da döndürebilir. Referans döndüren bir fonksiyon tanımlamak için, fonksiyon adının önüne "&" sembolü ekleyin.Örnek
Aşağıdaki kod, bir referans döndüren bir fonksiyonun örneğini gösterir. myfunction() içindeki yerel bir statik değişken olan $x'i döndürür. "&" sembolü önüne eklendiğinden, $a (döndürme değerini depolayan değişken) &x'e bir referans olur. Sonuç olarak, $a'daki herhangi bir değişiklik $x değerini de değiştirir.
PHP:
<?php
function &myfunction(){
static $x=10;
echo "x Inside function: $x \n";
return $x;
}
$a=&myfunction();
echo "Returned by Reference: $a \n";
$a=$a+10;
$a=&myfunction();
?>
Aşağıdaki çıktıyı üretecektir:
x Inside function: 10
Returned by Reference: 10
x Inside function: 20

