PHP isim alanları

► Detaylı anlatım

PHP 5.3.0 ile birlikte gelen isim alanlarını kullanarak, bir projede kullanılan sınıfları daha düzgün bir şekilde gruplandırabilir ve farklı isim alanlarında tanımlanan birden fazla sınıfın aynı sınıf ismi ile tanınlanmasını sağlayabiliriz.

İsim alanları PHP'de kullanılan tüm öğeleri barındırılabilir. Aynı isime sahip sınıf, fonksiyon ve sabit değerleri farklı isim alanları içinde tanımlanarak kullanılabilir.

İsim alanlarında her tür PHP kodu bulunabilmesine karşın sadece sınıflar, fonksiyonlar ve sabitler isim alanlarından etkilenir.

İsim alanlarının bildirimi namespace anahtar kelimesi ile yapılır.

Bir isim alanını içeren bir dosyada isim alanı diğer tüm kodlardan önce dosyanın başında bildirilmelidir. Bu kurala tek istisna declare anahtar kelimesidir. Dosya başında yer alan boşluklar, <html> ve <body> ifadeleri dahil olmak üzere hiç bir ifade bir isim alanı bildiriminden önce yer alamaz.


<?php 
    namespace name_bizim; // İsim alanı bildirimi

    const CONBOOL = 1;
    class sinif_bizim { /* ... */ }
    function deger_goster() { /* ... */  }
?>


<?php 
    namespace name_bizim;

    class sinif_bizim { // İsim alanı içinde sınıf bildirimi
	   public $pubdeg01; 
	   public $pubdeg02; 
       
	   function __construct ($arg01, $arg02)
       {
            $this->pubdeg01 = $arg01;       
            $this->pubdeg02 = $arg02; 
       }	   
      
	   public function deger_yaz()
       {
          echo $this->pubdeg01 . " " . $this->pubdeg02 . '<br/>';
       }	   
	}
    function fonk($arg) { // İsim alanı içinde fonksiyon bildirimi
	  echo $arg;
	}
	const CONINT = 17; // İsim alanı içinde sabit bildirimi

    $obj01 = new sinif_bizim(35, 84); // İsim alanındaki sınıftan nesne oluşturma
    $obj02 = new \name_bizim\sinif_bizim(42, 57); // İsim alanındaki sınıftan yol tanımı ile nesne oluşturma

    $obj01->deger_yaz();
	$obj02->deger_yaz();	
	
	echo CONINT; 
?>

Yukarıdaki dosyayı çalıştırdığımızda, web tarayıcımızda aşağıdaki ifadeler karşımıza çıkar::

35 84
42 57
17