PHP OOP namespace

OOP ile yazılım geliştirirken sınıfları gruplamak/parçalara ayırmak için kullanılan namespace ile ilgili bilgiler yer almaktadır.

PHP OOP namespace nedir?

OOP ile yazılım geliştirirken aynı ada sahip birden fazla sınıf olması durumda karışıklığı en aza indirmek için kullanılan bir yapıdır.

Bu yapı klasör/dizin yapısına benzetilebilir.

Tanımlamak için namespace anahtar kelimesi kullanılır.

<?php

namespace IlkOkul;

class Ogrenci { }

?>

Tanımlama yaparken dosyadaki ilk komutun namespace olması gerekir.

Aksi takdirde PHP Fatal Error verecektir.

<?php

echo "Merhaba Dünya";  // hata verecektir.

namespace IlkOkul;

class Ogrenci { }

?>

Bir dosya içinde birden fazla namespace olabilir.

<?php

namespace IlkOkul;

class Ogrenci {
  
}

namespace Lise;

class Ogrenci {
  
}

?>

Karışıklığı önlemek için namespace kapsama alanı süslü parantez ile belirtilebilir.

<?php

namespace IlkOkul {

  class Ogrenci {
    
  }

}

namespace Lise {

  class Ogrenci {
    
  }

}

echo "Merhaba Dünya";  // hata verir.

?>

Kapsama alanı süslü parantez ile belirtilirse süslü parantez dışına PHP kodları (echo, print vb.) yazılmaz.

Bir dosya içinde genellikle tek namespace kullanılır.

Tanımlama ters çizgi (\) ile gruplara ayrılabilir.

<?php

namespace Ogrenciler\IlkOkul;  // gruplara ayrılan namepsace

class Ogrenci {
  
}

namespace Ogrenciler\Lise;

class Ogrenci {
  
}

?>

Tanımlanan namespace içindeki sınıflara ters çizgi (\) ile erişilir.

<?php

namespace Ogrenciler\IlkOkul;

class Ogrenci {
  
}

namespace Ogrenciler\Lise;

class Ogrenci extends \Ogrenciler\IlkOkul\Ogrenci {  // başka bir namespace erişim
  
}

$ben = new \Ogrenciler\IlkOkul\Ogrenci();

?>

Tanımlanan namespace’lerden birini seçmek için use anahtar kelimesi kullanılır.

<?php

include_once './namespace.php';

use Ogrenciler\IlkOkul\Ogrenci;  // IlkOkul namepsace seçildi.

$ben = new Ogrenci();

echo get_class($ben);

?>

Benzer ada sahip namepsace’lere as anahtar kelimesiyle takma ad verilebilir.

<?php

include_once './namespace.php';

use Ogrenciler\IlkOkul\Ogrenci as YeniOgrenci;  // IlkOkul içindeki Ogrenci sınıfı artık YeniOgrenci oldu.
use Ogrenciler\Lise\Ogrenci;

$ben = new YeniOgrenci();

echo get_class($ben);

?>

Kullanılan namespace adlarının dikkatli kullanılması faydalı olacaktır.

PHP OOP Derslerine buradan ulaşabilirsiniz…

Hayırlı günler dilerim.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!