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
?>
(Sorry, I had to use "|" instead of "\", as it was always discarded in the preview, except within a comment.)
Hope, this can save someone from some trouble.
Best regards.
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
?>
