İsim alanları ve devingen dil özellikleri

(PHP 5 >= 5.3.0, PHP 7)

PHP'nin isim alanları gerçeklenimi bir programlama dili olarak PHP'nin kendi devingen doğasından etkilenir. Örnek olarak aşağıdaki kodu isim alanlı koda dönüştürmek istersek:

Örnek 1 - Devingen olarak erişilen elemanlar

örnek1.php:

<?php
class sınıfadı
{
    function 
__construct()
    {
        echo 
__METHOD__,"\n";
    }
}
function 
işlevadı()
{
    echo 
__FUNCTION__,"\n";
}
const 
sabitadı "küresel";

$a 'sınıfadı';
$obj = new $a;                   // sınıfadı::__construct basar
$b 'işlevadı';
$b();                            // işlevadı basar
echo constant('sabitadı'), "\n"// küresel basar
?>
Tamamen nitelenmiş isim kullanmak gerekir (isim alanı önekli sınıf adı). Bir devingen sınıf, işlev veya sabit ismi içinde bir nitelenmiş isim ile tamamen nitelenmiş isim arasında bir fark olmadığından baştaki ters bölünün gereksiz oluşuna dikkat edin.

Örnek 2 - Devingen olarak erişilen isim alanlı elemanlar

<?php
namespace isimalanıadı;
class 
sınıfadı
{
    function 
__construct()
    {
        echo 
__METHOD__,"\n";
    }
}
function 
işlevadı()
{
    echo 
__FUNCTION__,"\n";
}
const 
sabitadı "isimalanlı";

/* çift tırnakları kullanacaksanız, "\\isimalanıadı\\sınıfadı"
   biçiminde olmalıdır */
$a '\isimalanıadı\sınıfadı';
$obj = new $a// isimalanıadı\sınıfadı::__construct basar
$a 'isimalanıadı\sınıfadı';
$obj = new $a// bu da isimalanıadı\sınıfadı::__construct basar
$b 'isimalanıadı\işlevadı';
$b(); // isimalanıadı\işlevadı basar
$b '\isimalanıadı\işlevadı';
$b(); //bu da isimalanıadı\işlevadı basan
echo constant('\isimalanıadı\sabitadı'), "\n"// isimalanlı basar
echo constant('isimalanıadı\sabitadı'), "\n"// bu da isimalanlı basar
?>

SSS arasındaki Dizgelerdeki isim alanı adlarının öncelenmesi konusuna da bakmayı unutmayın.