İsim alanlarının kullanımından önce PHP'nin kodunuzdaki hangi isim alanlı kodu isteğinizi nasıl anlayabildiğinden bahsetmek gerekir. Bunu daha kolay anlayabilmek için PHP isim alanları ile dosya sistemleri arasındaki benzerlikten yola çıkılabilir. Bir dosya sistemindeki bir dosyaya üç yolla erişilebilir:
geçerlidizin/
olmak
üzere geçerlidizin/fan.txt olarak çözümlenir. Dolayısıyla
geçerli dizin /home/veli ise dosya ismi
/home/veli/fan.txt olarak çözümlenecektir.
geçerlidizin/
olmak üzere geçerlidizin/altdizin/fan.txt olarak
çözümlenir.
Üç söz dizimi aşağıda örneklenmiştir:
dosya1.php
<?php
namespace Fan\Fin\altisimalanı;
const FAN = 1;
function fan() {}
class fan
{
static function durukyöntem() {}
}
?>
dosya2.php
<?php
namespace Fan\Fin;
include 'dosya1.php';
const FAN = 2;
function fan() {}
class fan
{
static function durukyöntem() {}
}
/* Nitelenmemiş isim */
fan(); // Fan\Fin\fan işlevine çözümlenir
fan::durukyöntem(); // Fan\Fin\fan sınıfının durukyöntem yöntemine çözümlenir
echo FAN; // Fan\Fin\FAN sabitine çözümlenir
/* Nitelenmiş isim */
altisimalanı\fan(); // Fan\Fin\altisimalanı\fan işlevine çözümlenir
altisimalanı\fan::durukyöntem(); // Fan\Fin\altisimalanı\fan sınıfının
// durukyöntem yöntemine çözümlenir
echo altisimalanı\FAN; // Fan\Fin\altisimalanı\FAN sabitine çözümlenir
/* Tamamen nitelenmiş isim */
\Fan\Fin\fan(); // Fan\Fin\fan işlevine,
\Fan\Fin\fan::durukyöntem(); // Fan\Fin\fan sınıfının durukyöntem yöntemine,
echo \Fan\Fin\FAN; // Fan\Fin\FAN sabitine çözümlenir
?>
Herhangi bir küresel sınıf, işlev veya sabite \strlen(), \Exception veya \INI_ALL gibi tamamen nitelenmiş isimleriyle erişilebileceğine dikkat ediniz.
Örnek 1 - Küresel sınıf, işlev ve sabitlere bir isim alanı içinden erişim
<?php
namespace Fan;
function strlen() {}
const INI_ALL = 3;
class Exception {}
$a = \strlen('merhaba'); // strlen küresel işlevini çağırır
$b = \INI_ALL; // INI_ALL küresel sabitini çağırır
$c = new \Exception('error'); // Exception küresel sınıfını örnekler
?>