Php Namespaces Kullanımı

Namespace Nedir ?

Bu yazımızda Php dili ile nesne yönelimli programlama yaparken sıklıkla kullandığımız namespace olayından bahsedeceğim


Php dilinin 5.3 versiyonundan önce aynı isimde class tanımlarken hatalarla karşılaşılıyordu ve program buna izin vermiyordu. Namespace olayı 5.3 versiyonuyla geldi ve artık aynı isimli birden fazla class tanımlayıp kullanabilmemize olanak sağladı.

Namespace'ler iki farklı sorunu çözen özelliklerdir;

1- Bir işi gerçekleştirmek için birlikte çalışan sınıfları gruplayarak daha iyi ve yönetilebilir olmasına olanak sağlarlar.

2- Aynı ismin birden fazla sınıf için kullanılmasına izin verirler.

Namespace Tanımlama 

Namespacel'ler dosyanın en başında namespace anahtar sözcüğü kullanılarak tanımlanır. Temel sözdizimi ise şu şekildedir.

<?php
namespace deneme;
?>

Burada dikkat etmemiz gereken en önemli şeylerden biri ise şudur. Namespace php etiketinden sonra yazılan ilk kod olmalıdır. Aksi takdirde program hata verecektir.

<?php
echo "kodlamaklazim.com";
namespace deneme;
?>

Yukarıdaki kod bloğunu çalıştırırsanız hata ile karşılaşırsınız.

Şimdi basit bir örnekle namespace kullanımını pekiştirelim.

İki tane sınıfımız olsun ve ikisininde adı Tarih olsun. ve 3. dosyamızda bu iki sınıfı çağırıp kullanalım.

yiyecek.php dosyamız

<?php
namespace yiyecek{
  class Tarih
  {
    public function sonkullanma()
    {
      echo "Haziran 2021";
    }
  }
}
?>

araba.php dosyamız

<?php
namespace araba{
  class Tarih
  {
    public function model()
    {
      echo "1995";
    }
  }
}
?>

index.php dosyamız

<?php
include 'araba.php';
include 'yiyecek.php';
$tarih1= new araba\Tarih(); // hatasız çalışır
$tarih2= new yiyecek\Tarih(); // hatasız çalışır.
 
$tarih1->model();
echo "<br>";
$tarih2->sonkullanma();
/*
çıktı:
1995
Haziran 2021
*/
 ?>

Namespace'in temel kullanımı bu şekilde ancak bir kullanımı daha var ve popüler olarak kullanılan da bu kullanımıdır.

use anahtar sözcüğü kullanılarak daha güzel bir görünüm elde edebilirsiniz.

<?php
include('araba.php');
include('yiyecek.php');


use araba\Tarih;
use yiyecek\Tarih as ytarih;
 

$tarih1= new Tarih(); // hatasız çalışacak
$tarih2= new ytarih(); // hatasız çalışacak


$tarih1->model();
echo "<br>";
$tarih2->sonkullanma();
 ?>

Ayrıca yukardaki örnekte de gördüğünüz üzere use anahtar kelimesi ile çağırdığımız namespace'lere as anahtar kelimesi ile takma ad eklememizde mümkündür.


Neden namespace Kullanırız ?

Namespace'ler de nesne yönelimli programlama gibi ihtiyaçtan doğmuştur. Php dilinden önce atıyorum C dilinde bir dosyada bir class tanımlandığı zaman aynı isimde başka bir dosyada başka bir class tanımlasak ve bu iki class'ı aynı dosyaya include etsek tanımlama hatası veriyordu. Namespace'ler bu olayın önüne geçti ve artık istediğimiz kadar aynı isimde class tanımlayabilir duruma geldik. Şimdi diyorsunuz 5 tane dosyada iki tane aynı isimde class olsa ne olur ikisine de başka isim veririz düzelir. Küçük projeler için bu dediğiniz doğru ama devasa bir e-ticaret sistemi yazdığınızı düşünün ve projede 500 kişilik bir ekip olduğunu. Bir kişi sınıfa isim vermeden önce tüm projeyi incelemek zorunda kalırdı ve bu hiç işlevsel değil.


Size elimden geldiği kadar PHP dilinde namespace kavramını anlatmaya çalıştım. Umarım faydalı olur. Esen kalın :)

YAZAR HAKKINDA

26 Yaşında. Araştırmayı seven, bir şeyler öğretmeye meraklı bir Bilgisayar Mühendisi

0 YORUM

Bu konuya henüz yorum yapılmamış

Yorum Yap

@COPYRIGHT KodlamakLazım Tüm Hakları Saklıdır.