namespace sözcüğü ve __NAMESPACE__ sabiti

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;  // "İsim alanlarının kullanımı: ithal/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
?>

add a note add a note

User Contributed Notes 1 note

up
40
a dot schaffhirt at sedna-soft dot de
7 years ago
Just in case you wonder what the practical use of the namespace keyword is...

It can explicitly refer to classes from the current namespace regardless of possibly "use"d classes with the same name from other namespaces. However, this does not apply for functions.

Example:

<?php
namespace foo;
class
Xyz {}
function
abc () {}
?>

<?php
namespace bar;
class
Xyz {}
function
abc () {}
?>

<?php
namespace bar;
use
foo\Xyz;
use
foo\abc;
new
Xyz(); // instantiates \foo\Xyz
new namespace\Xyz(); // instantiates \bar\Xyz
abc(); // invokes \bar\abc regardless of the second use statement
\foo\abc(); // it has to be invoked using the fully qualified name
?>

Hope, this can save someone from some trouble.

Best regards.
To Top