<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.functions.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'functions.user-defined.php',
    1 => 'Kullanıcı tanımlı işlevler',
    2 => 'Kullanıcı tanımlı işlevler',
  ),
  'up' => 
  array (
    0 => 'language.functions.php',
    1 => 'İşlevler',
  ),
  'prev' => 
  array (
    0 => 'language.functions.php',
    1 => 'İşlevler',
  ),
  'next' => 
  array (
    0 => 'functions.arguments.php',
    1 => 'İşlev bağımsız değişkenleri',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'language/functions.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="functions.user-defined" class="sect1">
   <h2 class="title">Kullanıcı tanımlı işlevler</h2>
   <p class="para">
    Bir işlev, şöyle bir söz dizimi kullanılarak tanımlanabilir:
   </p>
   <p class="para">
    <div class="example" id="example-1">
     <p><strong>Örnek 1 - İşlev kullanımını gösteren sözde kod</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">(</span><span style="color: #0000BB">$arg_1</span><span style="color: #007700">, </span><span style="color: #0000BB">$arg_2</span><span style="color: #007700">, </span><span style="color: #FF8000">/* ..., */ </span><span style="color: #0000BB">$arg_n</span><span style="color: #007700">)<br />{<br />    echo </span><span style="color: #DD0000">"Örnek işlev.\n"</span><span style="color: #007700">;<br />    return </span><span style="color: #0000BB">$retval</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>

   <p class="simpara">
    Bir işlevin içerisinde geçerli her tür PHP kodu kullanılabilir, buna
    başka işlevler ve <a href="language.oop5.basic.php#language.oop5.basic.class" class="link">sınıf</a>
    tanımları da dahildir.
   </p>
   <p class="para">
    İşlev isimleri, PHP&#039;deki diğer isimlerle aynı kurallara tabidir. Geçerli
    bir işlev ismi bir harf ya da alt çizgi ile başlar, herhangi bir sayıda
    geçerli harf, sayı ya da alt çizgi ile devam eder. Düzenli ifade olarak,
    şu şekilde ifade edebiliriz:
   <code class="code">^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$</code>.
   </p>
   <p class="simpara">
    İşlevlerin çağrılmadan önce tanımlanmaları, aşağıdaki iki örnekte
    görüldüğü gibi koşullu olarak tanımlandıkları durumlar haricinde
    gerekmez.
   </p>
   <p class="para">
    Bir işlev aşağıdaki iki örnekte gösterildiği gibi koşullu olarak
    tanımlandıysa, bu işlev tanımının işlev çağrılmadan
    <em>önce</em> yapılması gerekmektedir.
   </p>
   <p class="para">
    <div class="example" id="example-2">
     <p><strong>Örnek 2 - Koşula bağlı işlevler</strong></p>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$makefoo </span><span style="color: #007700">= </span><span style="color: #0000BB">true</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">/* Henüz varolmadığı için foo() buradan çağrılamaz,<br />   ancak bar() çağrılabilir */<br /><br /></span><span style="color: #0000BB">bar</span><span style="color: #007700">();<br /><br />if (</span><span style="color: #0000BB">$makefoo</span><span style="color: #007700">) {<br />  function </span><span style="color: #0000BB">foo</span><span style="color: #007700">()<br />  {<br />    echo </span><span style="color: #DD0000">"Uygulamanın çalışması bana erişene kadar ben yokum.\n"</span><span style="color: #007700">;<br />  }<br />}<br /><br /></span><span style="color: #FF8000">/* $makefoo doğru olduğundan<br />   artık foo() çağrılabilir */<br /><br /></span><span style="color: #007700">if (</span><span style="color: #0000BB">$makefoo</span><span style="color: #007700">) </span><span style="color: #0000BB">foo</span><span style="color: #007700">();<br /><br />function </span><span style="color: #0000BB">bar</span><span style="color: #007700">()<br />{<br />  echo </span><span style="color: #DD0000">"Program başlatıldığı anda ben de varolurum.\n"</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
   <p class="para">
    <div class="example" id="example-3">
     <p><strong>Örnek 3 - İşlev içinde işlev</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">()<br />{<br />  function </span><span style="color: #0000BB">bar</span><span style="color: #007700">()<br />  {<br />    echo </span><span style="color: #DD0000">"foo() çağrılana kadar yokum.\n"</span><span style="color: #007700">;<br />  }<br />}<br /><br /></span><span style="color: #FF8000">/* Henüz varolmadığı için<br />   bar() çağrılamaz. */<br /><br /></span><span style="color: #0000BB">foo</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">/* Artık bar() çağrılabilir,<br />   foo() çağrıldığında bar()<br />   erişilebilir hale gelir */<br /><br /></span><span style="color: #0000BB">bar</span><span style="color: #007700">();<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
   <p class="para">
    PHP&#039;de tüm işlevler ve sınıflar betik genelinde geçerlidir - bir işlevin
    içinden tanımlanmış olsalar bile işlevin dışından çağrılabilirler.
   </p>
   <p class="simpara">
    PHP işlevlerin farklı bağımsız değişkenli yeni tanımlarının yapılmasını
    desteklemediği gibi, işlevler yeniden tanımlanamaz veya tanımsız
    kılınamaz.
   </p>
   <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
    <span class="simpara">
      İşlev isimleri <code class="literal">A</code>&#039;dan <code class="literal">Z</code>&#039;ye kadar
      ASCII karakterler için büyük-küçük harf duyarsızdır, ancak işlev
      isimlerini tanımlandıkları halleriyle kullanmak daha iyidir.
    </span>
   </p></blockquote>
   <p class="simpara">
    <a href="functions.arguments.php#functions.variable-arg-list" class="link">Bağımsız değişken sayısı değişken
    işlevler</a> desteklendiği gibi işlevlerde <a href="functions.arguments.php#functions.arguments.default" class="link">öntanımlı bağımsız değişken</a>
    kullanımı da desteklenmektedir. Daha ayrıntılı bilgi edinmek için
    <span class="function"><a href="function.func-num-args.php" class="function">func_num_args()</a></span>, <span class="function"><a href="function.func-get-arg.php" class="function">func_get_arg()</a></span> ve
    <span class="function"><a href="function.func-get-args.php" class="function">func_get_args()</a></span> işlevlerine de bakınız.
   </p>

   <p class="para">
    PHP&#039;de işlevlerin kendilerini çağırması da mümkündür.
    <div class="example" id="example-4">
     <p><strong>Örnek 4 - Kendini çağıran işlev</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">recursion</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">)<br />{<br />    if (</span><span style="color: #0000BB">$a </span><span style="color: #007700">&lt; </span><span style="color: #0000BB">20</span><span style="color: #007700">) {<br />        echo </span><span style="color: #DD0000">"</span><span style="color: #0000BB">$a</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;<br />        </span><span style="color: #0000BB">recursion</span><span style="color: #007700">(</span><span style="color: #0000BB">$a </span><span style="color: #007700">+ </span><span style="color: #0000BB">1</span><span style="color: #007700">);<br />    }<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
    <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
     <span class="simpara">
      Kendini çağıran işlev ve yöntemler bunu 100-200 kere yaparsa yığıt
      taşabilir ve çalışan betiğin durdurulmasına sebep olabilir. Özellikle,
      kendini çağırma sayısı sonsuza giderse bu bir programlama hatası
      sayılır.
     </span>
    </p></blockquote>
   </p>

  </div><?php manual_footer($setup); ?>