<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.references.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'language.references.whatdo.php',
    1 => 'G&ouml;nderim Ne Yapar?',
    2 => 'G&ouml;nderim Ne Yapar?',
  ),
  'up' => 
  array (
    0 => 'language.references.php',
    1 => 'G&ouml;nderimlerle İlgili Herşey',
  ),
  'prev' => 
  array (
    0 => 'language.references.whatare.php',
    1 => 'G&ouml;nderim Nedir?',
  ),
  'next' => 
  array (
    0 => 'language.references.arent.php',
    1 => 'G&ouml;nderimler Ne Değildir?',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'language/references.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.references.whatdo" class="sect1">
   <h2 class="title">Gönderim Ne Yapar?</h2>
   <p class="para">
    Gönderimleri kullanıldığı üç temel işlem vardır:
    <a href="language.references.whatdo.php#language.references.whatdo.assign" class="link">gönderimli atama</a>,
    <a href="language.references.whatdo.php#language.references.whatdo.pass" class="link">gönderimli aktarma</a>,
    ve <a href="language.references.whatdo.php#language.references.whatdo.return" class="link">gönderimli
    döndürme</a>. Bu bölümde bu işlemlerle ilgili bağlantılar verilerek bir
    başlangıç yapılmıştır.
   </p>
   <div class="sect2" id="language.references.whatdo.assign">
    <h3 class="title">Gönderimli atama</h3>
    <p class="para">
     Bu ilk temel işlemde, iki değişkenin aynı içeriğe atıf yapmasına izin
     verilir. Örnek:
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$a </span><span style="color: #007700">=&amp; </span><span style="color: #0000BB">$b</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
      Bunun anlamı, <var class="varname">$a</var> ve <var class="varname">$b</var>
      değişkenlerinin aynı içeriği gösterdiğidir.
    <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
     <p class="para">
      Burada <var class="varname">$a</var> ve <var class="varname">$b</var> tamamen eşittir;
      ne <var class="varname">$a</var>, <var class="varname">$b</var>&#039;yi göstermekte ne de
      <var class="varname">$b</var>, <var class="varname">$a</var>&#039;yı göstermektedir;
      <var class="varname">$a</var> ve <var class="varname">$b</var> aynı yeri göstermektedir.
     </p>
    </p></blockquote>
   </p>
   <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
    <p class="para">
      Eğer tanımlanmamış bir değişken gönderimle atanır, aktarılır  veya
      döndürülürse oluşturulmuş olur.
     <div class="example" id="example-1">
      <p><strong>Örnek 1 - Gönderimlerin tanımlanmamış değişkenlerle kullanımı</strong></p>
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">foo</span><span style="color: #007700">(&amp;</span><span style="color: #0000BB">$var</span><span style="color: #007700">) { }<br /><br /></span><span style="color: #0000BB">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">); </span><span style="color: #FF8000">// $a "oluşturulur" ve değer olarak null atanır<br /><br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">= array();<br /></span><span style="color: #0000BB">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">$b</span><span style="color: #007700">[</span><span style="color: #DD0000">'b'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">array_key_exists</span><span style="color: #007700">(</span><span style="color: #DD0000">'b'</span><span style="color: #007700">, </span><span style="color: #0000BB">$b</span><span style="color: #007700">)); </span><span style="color: #FF8000">// bool(true)<br /><br /></span><span style="color: #0000BB">$c </span><span style="color: #007700">= new </span><span style="color: #0000BB">stdClass</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">$c</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">d</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">property_exists</span><span style="color: #007700">(</span><span style="color: #0000BB">$c</span><span style="color: #007700">, </span><span style="color: #DD0000">'d'</span><span style="color: #007700">)); </span><span style="color: #FF8000">// bool(true)<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>

     </div>
    </p>
   </p></blockquote>
   <p class="para">
    Aynı sözdizimi, gönderim döndüren işlevler ile kullanılabilir:
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$foo </span><span style="color: #007700">=&amp; </span><span style="color: #0000BB">dğşkn_bul</span><span style="color: #007700">(</span><span style="color: #0000BB">$bar</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
   <p class="para">
    Aynı sözdizimini gönderimle dönmeyen bir işlevle kullanmak, işlevin
    <a href="language.oop5.basic.php#language.oop5.basic.new" class="link">new</a> işlecinin sonucuyla
    kullanımına benzer bir hata verecektir. Nesneler göstericilerle aktarılsa
    da bunlar, <a href="language.oop5.references.php" class="link">Nesneler ve
    Gönderimler</a>. altında açıklanan gönderimlerle aynı değildir.
   </p>
   <div class="warning"><strong class="warning">Uyarı</strong>
    <p class="para">
     Bir işlevin içinde <code class="literal">global</code> olarak bildirilmiş bir
     değişkeni gönderimli olarak atarsanız gönderim sadece işlevin içinde
     görünür olur. <var class="varname"><a href="reserved.variables.globals.php" class="classname">$GLOBALS</a></var> dizisini kullanarak bundan
     kaçınabilirsiniz.
     <div class="example" id="example-2">
      <p><strong>Örnek 2 - İşlev içinde küresel değişkenlere gönderim</strong></p>
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$var1 </span><span style="color: #007700">= </span><span style="color: #DD0000">"Örnek değişken"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$var2 </span><span style="color: #007700">= </span><span style="color: #DD0000">""</span><span style="color: #007700">;<br /><br />function </span><span style="color: #0000BB">küresel_gönderimler</span><span style="color: #007700">(</span><span style="color: #0000BB">$küreselleri_kullan</span><span style="color: #007700">)<br />{<br />    global </span><span style="color: #0000BB">$var1</span><span style="color: #007700">, </span><span style="color: #0000BB">$var2</span><span style="color: #007700">;<br />    if (!</span><span style="color: #0000BB">$küreselleri_kullan</span><span style="color: #007700">) {<br />        </span><span style="color: #0000BB">$var2 </span><span style="color: #007700">=&amp; </span><span style="color: #0000BB">$var1</span><span style="color: #007700">; </span><span style="color: #FF8000">// sadece işlev içinde görünürdür<br />    </span><span style="color: #007700">} else {<br />        </span><span style="color: #0000BB">$GLOBALS</span><span style="color: #007700">[</span><span style="color: #DD0000">"var2"</span><span style="color: #007700">] =&amp; </span><span style="color: #0000BB">$var1</span><span style="color: #007700">; </span><span style="color: #FF8000">// küresel alanda da görünürdür<br />    </span><span style="color: #007700">}<br />}<br /><br /></span><span style="color: #0000BB">küresel_gönderimler</span><span style="color: #007700">(</span><span style="color: #0000BB">false</span><span style="color: #007700">);<br />echo </span><span style="color: #DD0000">"var2'ye '</span><span style="color: #0000BB">$var2</span><span style="color: #DD0000">' atanır\n"</span><span style="color: #007700">; </span><span style="color: #FF8000">// var2'ye '' atanır<br /></span><span style="color: #0000BB">küresel_gönderimler</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br />echo </span><span style="color: #DD0000">"var2'ye '</span><span style="color: #0000BB">$var2</span><span style="color: #DD0000">' atanır\n"</span><span style="color: #007700">; </span><span style="color: #FF8000">// var2'ye 'Örnek değişken' atanır<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>

     </div>
     <code class="literal">global $var;</code> deyimi <code class="literal">$var
     =&amp; $GLOBALS[&#039;var&#039;];</code> deyimine bir kısayol olarak düşünülür.
     Bu bakımdan <code class="literal">$var</code>&#039;a başka bir gönderim atamak sadece
     yerel değişkenin gönderimini değiştirir.
    </p>
   </div>
   <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
    <p class="para">
     Eğer bir değişkene <a href="control-structures.foreach.php" class="link">foreach</a> döngüsü içinde gönderimle bir değer atarsanız
     gönderimde de değişiklik yapılmış olur.
     <div class="example" id="example-3">
      <p><strong>Örnek 3 - foreach döngüsü içinde gönderim</strong></p>
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$ref </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$row </span><span style="color: #007700">=&amp; </span><span style="color: #0000BB">$ref</span><span style="color: #007700">;<br />foreach (array(</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #0000BB">3</span><span style="color: #007700">) as </span><span style="color: #0000BB">$row</span><span style="color: #007700">) {<br />    </span><span style="color: #FF8000">// işlemler<br /></span><span style="color: #007700">}<br />echo </span><span style="color: #0000BB">$ref</span><span style="color: #007700">; </span><span style="color: #FF8000">// 3 - yinelenen dizinin son elemanı<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>

     </div>
    </p>
   </p></blockquote>
    <p class="para">
     Tam olarak gönderime göre atama olmamakla birlikte,
     <a href="function.array.php" class="link"><code class="literal">array()</code></a> dil
     oluşumu ile oluşturulan ifadeler, eklenecek dizi öğesi
     <code class="literal">&amp;</code> ile öncelenerek öyleymiş gibi davranabilir.
     Örnek:
     <div class="informalexample">
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$a </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">= array(</span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #0000BB">3</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$arr </span><span style="color: #007700">= array(&amp;</span><span style="color: #0000BB">$a</span><span style="color: #007700">, &amp;</span><span style="color: #0000BB">$b</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">], &amp;</span><span style="color: #0000BB">$b</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]++;<br /></span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">]++;<br /></span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #0000BB">2</span><span style="color: #007700">]++;<br /></span><span style="color: #FF8000">/* $a == 2, $b == array(3, 4); */<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>

     </div>
    </p>
    <p class="para">
     Bununla birlikte, dizilerdeki gönderimlerin potansiyel olarak tehlikeli
     olduğunu unutmayın. Bir ifadenin sağ tarafında yapılan bir gönderimli
     (gönderime göre değil) atama yapılması sol tarafı bir gönderim haline
     getirmez, fakat dizilerin içinde bu normal atamalar korunur. Bu ayrıca,
     dizilerin değerleriyle aktarıldığı işlev çağrılarında da uygulanır. Örnek:
     <div class="informalexample">
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/* Sayısal değikenlerin atanması */<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">=&amp; </span><span style="color: #0000BB">$a</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$c </span><span style="color: #007700">= </span><span style="color: #0000BB">$b</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$c </span><span style="color: #007700">= </span><span style="color: #0000BB">7</span><span style="color: #007700">; </span><span style="color: #FF8000">// $c bir gönderim değildir; $a veya $b değişmez<br /><br />/* Dizi değişkenlerinin atanması */<br /></span><span style="color: #0000BB">$arr </span><span style="color: #007700">= array(</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">=&amp; </span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]; </span><span style="color: #FF8000">// $a ve $arr[0] aynı gönderim kümesindedir<br /></span><span style="color: #0000BB">$arr2 </span><span style="color: #007700">= </span><span style="color: #0000BB">$arr</span><span style="color: #007700">; </span><span style="color: #FF8000">// gönderime göre atama değildir!<br /></span><span style="color: #0000BB">$arr2</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]++;<br /></span><span style="color: #FF8000">/* $a == 2, $arr == array(2) */<br />/* Bir gönderim olmasa bile, $arr'ın içeriği değişti!! */<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>

     </div>
     Başka bir deyişle, dizilerin gönderim davranışı her eleman için ayrı
     tanımlanır; elemanların tek tek gönderim davranışı dizi taşıyıcısının
     gönderim durumundan bağımsızdır.
    </p>
  </div>
  <div class="sect2" id="language.references.whatdo.pass">
   <h3 class="title">Gönderimli aktarım</h3>
   <p class="para">
    Gönderimlerle yapılan ikinci şey değişkenleri gönderimle aktarmaktır. Bir
    işlev içinde bir yerel değişken oluşturup çağrı etki alanında bir
    değişkenle aynı içeriğe gönderim yaparak bu gerçeklenebilir. Örnek:
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">foo</span><span style="color: #007700">(&amp;</span><span style="color: #0000BB">$var</span><span style="color: #007700">)<br />{<br />    </span><span style="color: #0000BB">$var</span><span style="color: #007700">++;<br />}<br /><br /></span><span style="color: #0000BB">$a</span><span style="color: #007700">=</span><span style="color: #0000BB">5</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">$a</span><span style="color: #007700">; </span><span style="color: #FF8000">// 6 çıktılar<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
      <var class="varname">$a</var>&#039;nın 6 olmasının sebebi <var class="varname">foo</var>
      işlevinde <var class="varname">$var</var> değişkeninin
      <var class="varname">$a</var>&#039;nın içeriğine gönderimli olmasıdır. Daha
      ayrıntılı açıklamayı <a href="language.references.pass.php" class="link">gönderimle aktarım</a> bölümünde bulabilirsiniz.
   </p>
  </div>
  <div class="sect2" id="language.references.whatdo.return">
   <h3 class="title">Gönderimli değer döndürme</h3>
   <p class="para">
    Gönderimlerle yapılan üçüncü şey <a href="language.references.return.php" class="link">gönderimli değer döndürme</a>dir.
   </p>
  </div>
 </div><?php manual_footer($setup); ?>