namespace sözcüğü ve __NAMESPACE__ sabiti

(PHP 5 >= 5.3.0, PHP 7)

PHP, geçerli isim alanı içindeki elemanlara mutlak olarak iki yolla erişimi destekler: sihirli __NAMESPACE__ sabiti ve namespace anahtar sözcüğü.

__NAMESPACE__ sabitinin değeri içinde bulunulan isim alanının adını içeren bir dizgedir. Küresel alandaki isim alansız kod için sabitin değeri boş dizgedir.

Örnek 1 - İsim alanlı kod, __NAMESPACE__ örneği

<?php
namespace Projem;

echo 
'"'__NAMESPACE__'"'// "Projem" basar
?>

Örnek 2 - Küresel kod, __NAMESPACE__ örneği

<?php

echo '"'__NAMESPACE__'"'// "" basar
?>
__NAMESPACE__ sabiti devingen olarak oluşturulan isimler için kullanışlıdır.

Örnek 3 - Devingen isim oluşturmak için __NAMESPACE__ kullanımı

<?php
namespace Projem;

function 
get($sınıfadı)
{
    
$a __NAMESPACE__ '\\' $sınıfadı;
    return new 
$a;
}
?>

namespace sözcüğü, geçerli isim alanından veya bir alt isim alanından doğrudan doğruya bir eleman isteği yaparken kullanılabilir. Sınıflardaki self işlecinin isim alanlarındaki karşılığıdır.

Örnek 4 - Bir isim alanı içinde namespace işleci

<?php
namespace Projem;

use 
fan\fin as fon;  // bak: "İsim alanlarının kullanımı: İthal/Rumuz"

fin\fon();           // Projem\fin\fon() işlevini çağırır
namespace\fin\fon(); // Projem\fin\fon() işlevini çağırır

namespace\işlev();   // Projem\işlev() işlevini çağırır
namespace\alt\işlev();    // Projem\alt\işlev() işlevini çağırır
namespace\isim::yöntem(); // Projem\isim sınıfının duruk "yöntem"
                          // yöntemini çağırır
$a = new namespace\alt\isim(); // Projem\alt\isim sınıfını örnekler
$b = namespace\SABİT;     // Projem\SABİT sabitinin değerini $b'ye atar
?>

Örnek 5 - Küresel kod içinde namespace işleci

<?php

namespace\işlev();        // işlev() işlevini çağırır
namespace\alt\işlev();    // alt\işlev() işlevini çağırır
namespace\isim::yöntem(); // isim sınıfının duruk "yöntem" yöntemini çağırır
$a = new namespace\alt\isim(); // alt\isim sınıfını örnekler
$b = namespace\SABİT;     // SABİT sabitinin değerini $b'ye atar
?>