<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.namespaces.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'language.namespaces.rules.php',
    1 => 'İsim &ccedil;&ouml;z&uuml;n&uuml;rl&uuml;k kuralları',
    2 => 'İsim &ccedil;&ouml;z&uuml;n&uuml;rl&uuml;k kuralları',
  ),
  'up' => 
  array (
    0 => 'language.namespaces.php',
    1 => 'İsim Alanları',
  ),
  'prev' => 
  array (
    0 => 'language.namespaces.fallback.php',
    1 => 'K&uuml;resel alana son &ccedil;are',
  ),
  'next' => 
  array (
    0 => 'language.namespaces.faq.php',
    1 => 'SSS',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'language/namespaces.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.namespaces.rules" class="sect1">
  <h2 class="title">İsim çözünürlük kuralları</h2>
  
  <p class="verinfo">(PHP 5 &gt;= 5.3.0, PHP 7, PHP 8)</p>
  <p class="para">
   İsim çözünürlük kurallarının amaçları gereği bazı önemli tanımlar:
   <dl>
    <strong class="title">İsim alanı adı tanımları</strong>
    
     <dt>Nitelenmemiş isim</dt>
     <dd>
      <p class="para">
       <code class="literal">Fan</code> gibi bir isim alanı ayracı içermeyen bir betimleyici.
      </p>
     </dd>
    
    
     <dt>Nitelenmiş isim</dt>
     <dd>
      <p class="para">
       <code class="literal">Fan\Fin</code> gibi bir isim alanı ayracı içeren bir
       betimleyici.
      </p>
     </dd>
    
    
     <dt>Tamamen nitelenmiş isim</dt>
     <dd>
      <p class="para">
       <code class="literal">\Fan\Fin</code> gibi bir isim alanı ayracı ile başlayan isim
       alanı ayraçlı bir betimleyici. <code class="literal">\Fan</code> isim alanı da
       tamamen nitelenmiş bir isimdir.
      </p>
     </dd>
    
    
     <dt>Göreli isim</dt>
     <dd>
      <p class="para">
       <code class="literal">namespace\Fan\Fin</code> gibi <code class="literal">namespace</code> ile
       başlayan bit tanımlayıcıdır.
      </p>
     </dd>
    
   </dl>
  </p>
  <p class="para">
   İsimler şu kurallara göre çözümlenir:
   <ol type="1">
    <li class="listitem">
     <span class="simpara">
      Tamamen nitelenmiş isimler daima önünde ters bölü imi olmayan isimlere
      çözümlenir. Örneğin, <code class="literal">new \A\B</code> deyimi
      <code class="literal">A\B</code> sınıfı olarak çözümlenir.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Göreli isimler ise daima <code class="literal">namespace\</code> öneki geçerli
      isim alanı ile değiştirilerek çözümlenir. Eğer isim küresel isim
      alanındaysa <code class="literal">namespace\</code> öneki konmaz. Örneğin,
      <code class="literal">X\Y</code> isim alanındaki <code class="literal">namespace\A</code>,
      <code class="literal">X\Y\A</code> olarak çözümlenirken aynı isim küresel isim
      alanı içindeyse <code class="literal">A</code> olarak çözümlenir.
     </span>
    </li>
     <li class="listitem">
      <span class="simpara">
       Nitelenmiş isimlerde ismin ilk bölümü geçerli sınıf/isimalanı ithal
       tablosuna göre dönüştürülür. Örneğin, <code class="literal">A\B\C</code> isim
       alanı <code class="literal">C</code> olarak ithal edilmişse
       <code class="literal">C\D\E</code> ismi <code class="literal">A\B\C\D\E</code> ismine
       dönüştürülür.
      </span>
     </li>
    <li class="listitem">
     <span class="simpara">
      Nitelenmiş isimlerde ithal kurallarına göre dönüştürülmeyen tüm
      isimlerin önüne geçerli isim alanı ismi getirilir. Örneğin,
      <code class="literal">A\B</code> isim alanınındaki bir <code class="literal">C\D\E</code>
      ismi <code class="literal">A\B\C\D\E</code> ismine dönüştürülecektir.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Nitelenmemiş isimler derleme sırasında ilgili türün geçerli ithal
      kurallarına göre dönüştürülür. Yani, sınıf benzeri isimler
      sınıf/isimalanı ithal tablosuna göre, işlevler işlev ithal tablosuna
      göre, sabitler sabit ithal tablosuna göre dönüştürülür. Örneğin,
      <code class="literal">use A\B\C;</code> sonrasında <code class="literal">new C()</code>
      gibi bir kullanım <code class="literal">A\B\C()</code> olarak çözümlenir. benzer
      şekilde, <code class="literal">use function A\B\fan;</code> sonrasında
      <code class="literal">fan()</code> gibi bir kullanım <code class="literal">A\B\fan</code>
      ismine dönüştürülür.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      İthal kuralları uygulanamayan nitelenmemiş sınıf benzeri isimler geçerli
      isim alanı ile öncelenerek dönüştürülür. Örneğin, <code class="literal">A\B</code>
      isim alanındaki <code class="literal">new C()</code> bildirimi
      <code class="literal">A\B\C</code> ismine çözümlenir.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      İthal kuralları uygulanamayan nitelenmemiş işlev veya sabit benzeri
      isimler ve küresel isim alanı dışındaki kod isimleri çalışma sırasında
      çözümlenir. Kodun <code class="literal">A\B</code> isim alanında olduğunu
      varsayalım, <code class="literal">fan()</code> işlev çağrısı şöyle gerçekleşir:
     </span>
      <ol type="1">
       <li class="listitem">
        <span class="simpara">
         Geçerli isim alanında <code class="literal">A\B\fan()</code> işlevi aranır.
        </span>
       </li>
       <li class="listitem">
        <span class="simpara">
         Küresel <code class="literal">fan()</code> işlevi bulunmaya ve çağrılmaya çalışılır.
        </span>
       </li>
      </ol>
    </li>
   </ol>
  </p>
  <div class="example" id="example-1">
   <p><strong>Örnek 1 - Örneklerle İsim Çözünürlüğü</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">namespace </span><span style="color: #0000BB">A</span><span style="color: #007700">;<br />use </span><span style="color: #0000BB">B\D</span><span style="color: #007700">, </span><span style="color: #0000BB">C\E </span><span style="color: #007700">as </span><span style="color: #0000BB">F</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// işlev çağrıları<br /><br /></span><span style="color: #0000BB">fan</span><span style="color: #007700">();      </span><span style="color: #FF8000">// Varsa "A" isim alanında tanımlı "fan", yoksa küresel "fan"<br /><br /></span><span style="color: #0000BB">\fan</span><span style="color: #007700">();     </span><span style="color: #FF8000">// Küresel alanda tanımlı "fan" çağrılır<br /><br /></span><span style="color: #0000BB">my\fan</span><span style="color: #007700">();   </span><span style="color: #FF8000">// "A\my" isim alanında tanımlı "fan" çağrılır<br /><br /></span><span style="color: #0000BB">F</span><span style="color: #007700">();        </span><span style="color: #FF8000">// Varsa "A" isim alanında tanımlı "F", yoksa küresel "F"<br /><br />//sınıf adı çağrıları<br /><br /></span><span style="color: #007700">new </span><span style="color: #0000BB">B</span><span style="color: #007700">();    </span><span style="color: #FF8000">// Varsa "A" isim alanında tanımlı "B" örneklenir<br />            // Yoksa "A\B" sınıfı otomatik olarak yüklenmeye çalışılır<br /><br /></span><span style="color: #007700">new </span><span style="color: #0000BB">D</span><span style="color: #007700">();    </span><span style="color: #FF8000">// ithal kuralları ile, "B" isim alanında tanımlı "D" örneklenir<br />            // yoksa "B\D" sınıfı otomatik olarak yüklenmeye çalışılır<br /><br /></span><span style="color: #007700">new </span><span style="color: #0000BB">F</span><span style="color: #007700">();    </span><span style="color: #FF8000">// ithal kuralları ile, "C" isim alanında tanımlı "E" örneklenir<br />            // yoksa "C\E" sınıfı otomatik olarak yüklenmeye çalışılır<br /><br /></span><span style="color: #007700">new </span><span style="color: #0000BB">\B</span><span style="color: #007700">();   </span><span style="color: #FF8000">// Varsa küresel alanda tanımlı "B" örneklenir<br />            // yoksa "B" sınıfı otomatik olarak yüklenmeye çalışılır<br /><br /></span><span style="color: #007700">new </span><span style="color: #0000BB">\D</span><span style="color: #007700">();   </span><span style="color: #FF8000">// Varsa küresel alanda tanımlı "D" örneklenir<br />            // yoksa "D" sınıfı otomatik olarak yüklenmeye çalışılır<br /><br /></span><span style="color: #007700">new </span><span style="color: #0000BB">\F</span><span style="color: #007700">();   </span><span style="color: #FF8000">// Varsa küresel alanda tanımlı "F" örneklenir<br />            // yoksa "F" sınıfı otomatik olarak yüklenmeye çalışılır<br /><br />// başka bir isim alanından statik yöntem/isim alanı işlevleri<br /><br /></span><span style="color: #0000BB">B\fan</span><span style="color: #007700">();    </span><span style="color: #FF8000">// "A\B" isim alanında tanımlı "fan" çağrılır<br /><br /></span><span style="color: #0000BB">B</span><span style="color: #007700">::</span><span style="color: #0000BB">fan</span><span style="color: #007700">();   </span><span style="color: #FF8000">// "A" isim alanında tanımlı "B" sınıfının "fan" yöntemi çağrılır<br />            // "A\B" sınıfı yoksa, "A\B" otomatik yüklenmeye çalışılır<br /><br /></span><span style="color: #0000BB">D</span><span style="color: #007700">::</span><span style="color: #0000BB">fan</span><span style="color: #007700">();   </span><span style="color: #FF8000">// ithal kuralları ile, "B" isim alanında tanımlı "D" sınıfının<br />            // "fan" yöntemi çağrılır; "B\D"  sınıfı yoksa, "B\D"<br />            // otomatik yüklenmeye çalışılır<br /><br /></span><span style="color: #0000BB">\B\fan</span><span style="color: #007700">();   </span><span style="color: #FF8000">// "B" isim alanında tanımlı "fan" çağrılır<br /><br /></span><span style="color: #0000BB">\B</span><span style="color: #007700">::</span><span style="color: #0000BB">fan</span><span style="color: #007700">();  </span><span style="color: #FF8000">// Küresel alandaki "B" sınıfının "fan" yöntemi çağrılır<br />            // "B" sınıfı yoksa, "B" otomatik yüklenmeye çalışılır<br /><br />// geçerli isim alanının statik yöntemleri ve isim alanı işlevleri<br /><br /></span><span style="color: #0000BB">A\B</span><span style="color: #007700">::</span><span style="color: #0000BB">fan</span><span style="color: #007700">();   </span><span style="color: #FF8000">// "A\A" isim alanında tanımlı "B" sınıfının "fan" yöntemi<br />              // çağrılır; "A\A\B" sınıfı yoksa, "A\A\B" otomatik<br />              // yüklenmeye çalışılır<br /><br /></span><span style="color: #0000BB">\A\B</span><span style="color: #007700">::</span><span style="color: #0000BB">fan</span><span style="color: #007700">();  </span><span style="color: #FF8000">// "A" isim alanında tanımlı "B" sınıfının "fan" yöntemi<br />              // çağrılır; "A\B" sınıfı yoksa, "A\B" otomatik yüklenmeye<br />              // çalışılır<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

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