array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'tr', ), 'this' => array ( 0 => 'language.namespaces.basics.php', 1 => 'İsim alanlarının kullanımı: Temeller', ), 'up' => array ( 0 => 'language.namespaces.php', 1 => 'İsim Alanları', ), 'prev' => array ( 0 => 'language.namespaces.definitionmultiple.php', 1 => 'Birden Fazla İsim Alanının Aynı Dosyada Tanımlanması', ), 'next' => array ( 0 => 'language.namespaces.dynamic.php', 1 => 'İsim alanları ve dinamik dil özellikleri', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'tr', 'path' => 'language/namespaces.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
İsim alanlarının kullanımından önce PHP'nin kodunuzdaki hangi isim alanlı kodu isteğinizi nasıl anlayabildiğinden bahsetmek gerekir. Bunu daha kolay anlayabilmek için PHP isim alanları ile dosya sistemleri arasındaki benzerlikten yola çıkılabilir. Bir dosya sistemindeki bir dosyaya üç yolla erişilebilir:
fan.txt
şeklinde göreli dosya ismiyle. Bu isim dosya
sisteminde içinde bulunulan dizin geçerlidizin/
olmak
üzere geçerlidizin/fan.txt
olarak çözümlenir. Dolayısıyla
geçerli dizin /home/veli
ise dosya ismi
/home/veli/fan.txt
olarak çözümlenecektir.
altdizin/fan.txt
şeklinde göreli dosya yolu. Bu isim
dosya sisteminde içinde bulunulan dizin geçerlidizin/
olmak üzere geçerlidizin/altdizin/fan.txt
olarak
çözümlenir.
/home/veli/fan.txt
şeklinde mutlak dosya yolu. Bu,
/home/veli/fan.txt
olarak çözümlenir.
$a = new fan();
veya
fan::statikyöntem();
gibi bir nitelenmemiş isim veya
öneksiz bir sınıf ismi. Eğer geçerli isim alanı ismi
geçerlisimalanı
ise bu isim,
geçerlisimalanı\fan
olarak çözümlenir. Eğer kod küresel
ve isim alansız ise, isim fan
olarak çözümlenecektir.
Bir ayrıntı: Eğer isim alanlı işlev ve sabitler tanımlı ise
nitelenmemiş isimli işlevler ve sabitler küresel işlevler ve sabitler
olarak çözümlenir. Ayrıntılar için İsim alanlarının kullanımı: Son
çare olarak küresel işlev ve sabitler bölümüne bakınız.
$a = new altisimalanı\fan();
veya
altisimalanı\fan::statikyöntem();
gibi bir nitelenmemiş
isim veya öneksiz bir sınıf ismi. Eğer geçerli isim alanı ismi
geçerlisimalanı
ise bu isim,
geçerlisimalanı\altisimalanı\fan
olarak çözümlenir. Eğer
kod küresel ve isim alansız ise, isim altisimalanı\fan
olarak çözümlenecektir.
$a = new \geçerlisimalanı\fan();
veya
\geçerlisimalanı\fan::statikyöntem();
gibi tamamen
nitelenmiş isim veya küresel önekli bir isim. Bu isim daima kodda
belirtildiği gibi geçerlisimalanı\fan
olarak çözümlenir.
Üç söz dizimi aşağıda örneklenmiştir:
dosya1.php
<?php
namespace Fan\Fin\altisimalanı;
const FAN = 1;
function fan() {}
class fan
{
static function statikyöntem() {}
}
?>
dosya2.php
<?php
namespace Fan\Fin;
include 'dosya1.php';
const FAN = 2;
function fan() {}
class fan
{
static function statikyöntem() {}
}
/* Nitelenmemiş isim */
fan(); // Fan\Fin\fan işlevine çözümlenir
fan::statikyöntem(); // Fan\Fin\fan sınıfının statikyöntem yöntemine çözümlenir
echo FAN; // Fan\Fin\FAN sabitine çözümlenir
/* Nitelenmiş isim */
altisimalanı\fan(); // Fan\Fin\altisimalanı\fan işlevine çözümlenir
altisimalanı\fan::statikyöntem(); // Fan\Fin\altisimalanı\fan sınıfının
// statikyöntem yöntemine çözümlenir
echo altisimalanı\FAN; // Fan\Fin\altisimalanı\FAN sabitine çözümlenir
/* Tamamen nitelenmiş isim */
\Fan\Fin\fan(); // Fan\Fin\fan işlevine,
\Fan\Fin\fan::statikyöntem(); // Fan\Fin\fan sınıfının statikyöntem yöntemine,
echo \Fan\Fin\FAN; // Fan\Fin\FAN sabitine çözümlenir
?>
Herhangi bir küresel sınıf, işlev veya sabite
\strlen(), \Exception veya
\INI_ALL
gibi tamamen nitelenmiş isimleriyle
erişilebileceğine dikkat ediniz.
Örnek 1 - Küresel sınıf, işlev ve sabitlere bir isim alanı içinden erişim
<?php
namespace Fan;
function strlen() {}
const INI_ALL = 3;
class Exception {}
$a = \strlen('merhaba'); // strlen küresel işlevini çağırır
$b = \INI_ALL; // INI_ALL küresel sabitini çağırır
$c = new \Exception('error'); // Exception küresel sınıfını örnekler
?>