romegames 1
romegames
Krutzo 1
Krutzo
shrpnl 1
shrpnl
Best Studio 1
Best Studio
D 1
delimuratt
Aliyldrim 1
Aliyldrim
Mt2Hizmet 1
Mt2Hizmet
noisiv 1
noisiv
Manwe Work 1
Manwe Work
melankolıa18 1
melankolıa18
Agora Metin2 1
Agora Metin2
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

PHP - Referansla Çağrı

Carissa

Administrator
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye Turkmmo Discord Nitro Booster
Admin
VIP Üye
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
Ticaret - 0%
0   0   0

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!

Call-by-Reference-Call-by-Value-PHP-Function-Types-Hindi.png


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
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst