Bir isim alanı içinde PHP, bir sınıf ismi, işlev veya sabitin bağlamında nitelenmemiş isimlere rastlarsa bunları farklı önceliklerle ele alır. Sınıf isimleri daima geçerli isim alanı ismine çözümlenir. Dolayısıyla yerleşik veya isim alansız kullanıcı sınıflarına erişmek için, bunların aşağıdaki gibi tamamen nitelenmiş isimlerinin kullanılması gerekir:
Örnek 1 - Küresel sınıflara bir isim alanı içinde erişim
<?php
namespace A\B\C;
class Exception extends \Exception {}
$a = new Exception('hi'); // $a, A\B\C\Exception sınıfının bir nesnesidir
$b = new \Exception('hi'); // $b, Exception sınıfının bir nesnesidir
$c = new ArrayObject; // ölümcül hata, A\B\C\ArrayObject yoktur
?>
İşlevler ve sabitler açısından PHP, bir isim alanlı işlev veya sabit mevcut değilse son çare olarak küresel işlevlere ve sabitlere başvurur.
Örnek 2 - Bir isim alanı içinde son çare olarak küresel işlev ve sabitlerin kullanımı
<?php
namespace A\B\C;
const E_ERROR = 45;
function strlen($str)
{
return \strlen($str) - 1;
}
echo E_ERROR, "\n"; // "45" basar
echo INI_ALL, "\n"; // "7" basar - son çare olarak küresel INI_ALL
echo strlen('hi'), "\n"; // "1" basar
if (is_array('hi')) { // "dizi değil" basar
echo "dizi\n";
} else {
echo "dizi değil\n";
}
?>