(PHP 5 >= 5.3.0, PHP 7, PHP 8)
İsim çözünürlük kurallarının amaçları gereği bazı önemli tanımlar:
Fan
gibi bir isim alanı ayracı içermeyen bir betimleyici.
Fan\Fin
gibi bir isim alanı ayracı içeren bir betimleyici.
\Fan\Fin
gibi bir isim alanı ayracı ile başlayan isim alanı ayraçlı bir betimleyici. \Fan
isim alanı da tamamen nitelenmiş bir isimdir.
namespace\Fan\Fin
gibi namespace
ile başlayan bit tanımlayıcıdır.
İsimler şu kurallara göre çözümlenir:
new \A\B
deyimi A\B
sınıfı olarak çözümlenir. namespace\
öneki geçerli isim alanı ile değiştirilerek çözümlenir. Eğer isim küresel isim alanındaysa namespace\
öneki konmaz. Örneğin, X\Y
isim alanındaki namespace\A
, X\Y\A
olarak çözümlenirken aynı isim küresel isim alanı içindeyse A
olarak çözümlenir. A\B\C
isim alanı C
olarak ithal edilmişse C\D\E
ismi A\B\C\D\E
ismine dönüştürülür. A\B
isim alanınındaki bir C\D\E
ismi A\B\C\D\E
ismine dönüştürülecektir. use A\B\C;
sonrasında new C()
gibi bir kullanım A\B\C()
olarak çözümlenir. benzer şekilde, use function A\B\fan;
sonrasında fan()
gibi bir kullanım A\B\fan
ismine dönüştürülür. A\B
isim alanındaki new C()
bildirimi A\B\C
ismine çözümlenir. A\B
isim alanında olduğunu varsayalım, fan()
işlev çağrısı şöyle gerçekleşir: A\B\fan()
işlevi aranır. fan()
işlevi bulunmaya ve çağrılmaya çalışılır. Örnek 1 - Örneklerle İsim Çözünürlüğü
<?php
namespace A;
use B\D, C\E as F;
// işlev çağrıları
fan(); // Varsa "A" isim alanında tanımlı "fan", yoksa küresel "fan"
\fan(); // Küresel alanda tanımlı "fan" çağrılır
my\fan(); // "A\my" isim alanında tanımlı "fan" çağrılır
F(); // Varsa "A" isim alanında tanımlı "F", yoksa küresel "F"
//sınıf adı çağrıları
new B(); // Varsa "A" isim alanında tanımlı "B" örneklenir