> For the complete documentation index, see [llms.txt](https://docs.layraweb.com.tr/merhaba/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.layraweb.com.tr/merhaba/php-tarafi/konular/siniflar-ve-nesneler/ad-alanlari-namespaces.md).

# Ad alanları (Namespaces)

PHP'de Ad alanları (Namespaces), değişken, fonksiyon ve sınıf isimlerinin benzersiz bir şekilde belirtilmesini sağlayan bir mekanizmadır. Ad alanları, özellikle büyük ve karmaşık projelerde, farklı kod bloklarının birbirleriyle çakışmasını önlemek için kullanılır.

Bir ad alanı tanımlamak için `namespace` anahtar kelimesi kullanılır. Örneğin, `myNamespace` adında bir ad alanı tanımlamak için aşağıdaki gibi bir kod yazabiliriz:

```php
namespace myNamespace;
```

Bu tanımlama, o andan itibaren yazılan kodların `myNamespace` ad alanı içinde yer alacağını belirtir. Örneğin, `myFunction()` adında bir fonksiyon `myNamespace` ad alanı içinde tanımlanacaksa şöyle yazılabilir:

```php
namespace myNamespace;

function myFunction() {
  // Fonksiyon kodları
}
```

Bu fonksiyona `myNamespace\myFunction()` şeklinde erişilebilir.

Ayrıca, birden fazla ad alanı da tanımlanabilir. Örneğin:

```php
namespace myNamespace;

function myFunction() {
  // Fonksiyon kodları
}

namespace myOtherNamespace;

class myClass {
  // Sınıf kodları
}
```

Yukarıdaki örnekte, önce `myNamespace` ad alanı içinde `myFunction()` fonksiyonu tanımlanır, ardından `myOtherNamespace` ad alanı içinde `myClass` sınıfı tanımlanır.

Ad alanlarını kullanarak, farklı kod bloklarında aynı isimleri kullanabiliriz. Örneğin:

```php
namespace myNamespace;

function myFunction() {
  echo "myNamespace\myFunction()";
}

namespace myOtherNamespace;

function myFunction() {
  echo "myOtherNamespace\myFunction()";
}

// Çıktı: myNamespace\myFunction()
myNamespace\myFunction();

// Çıktı: myOtherNamespace\myFunction()
myOtherNamespace\myFunction();
```

Yukarıdaki örnekte, `myNamespace` ve `myOtherNamespace` ad alanlarında aynı isimli `myFunction()` fonksiyonları tanımlanmıştır. Fonksiyonlara ad alanları ile erişilerek ilgili çıktılar alınmıştır.

Ad alanlarının kullanımı, kodun okunabilirliğini artırır ve çakışmaları önler. Ancak, ad alanlarının fazla kullanımı, kodu karmaşıklaştırabilir ve okunabilirliği azaltabilir. Doğru bir kullanım, kodun anlaşılabilirliğini artırabilir ve bakımını kolaylaştırabilir.
