namespace tanımlama
namespace anahtar kelimesiyle kodu paketlemeyi öğrenirsin.
namespace ne işe yarar?
Bazı projelerde aynı isimli sınıflar çakışır: iki kütüphane de User tanımlamış olabilir. namespace bu sorunu çözer; sınıfları paketlere ayırır. namespace App; yazdığında User sınıfı aslında App\User adını taşır.
Bildirim PHP açılış etiketinden hemen sonra, dosyadaki ilk ifade olarak yazılır. Tüm sınıf, fonksiyon ve sabitler bu namespace'e dahil olur. \ ile seviyeleri ayırırsın: App\Models\User.
namespace bildirimi nasıl yazılır?
Bir dosyada namespace App\Models; yazdığında, PHP bu dosyadaki tüm sınıfları App\Models paketine koyar. Bildirimden önce sadece PHP açılış etiketi ve declare ifadesi bulunabilir; başka kod olamaz.
__NAMESPACE__ sabiti mevcut namespace'in adını dize olarak verir. Bu, hata ayıklarken veya dinamik sınıf adı üretirken işe yarar.
Uygulama namespace ve sınıf tanımla
namespace App\Utils; tanımla. İçinde Helper sınıfı ve public static function greet($name) metodu olsun; metod "Merhaba, " ön ekiyle adı yazdırsın. Sonra Helper::greet("Ayşe") çağır ve __NAMESPACE__ yazdır.
Örnek çözümü göster
:greet("Ayşe"); ve echo __NAMESPACE__ . "\n"; çağır.
Örnek çözüm:
<?php
namespace App\Utils;
class Helper {
public static function greet($name) {
echo "Merhaba, " . $name . "!\n";
}
}
Helper::greet("Ayşe");
echo __NAMESPACE__ . "\n";
Kendini test et
-
namespace ne işe yarar?
- Kodu daha hızlı çalıştırır
- Aynı adlı sınıfların çakışmasını önler
- Veritabanı bağlantısını yönetir
- Otomatik hata yakalamayı sağlar
Cevabı göster
Aynı adlı sınıfların çakışmasını önler — Doğru. namespace aynı isimli sınıfları farklı paketlere ayırır.
-
namespace bildirimini tamamla
<?php ____ App\Services\UserService; class UserService { public array $info = ["name" => "default"]; }Cevabı göster
<?php namespace App\Services\UserService; class UserService { public array $info = ["name" => "default"]; } -
namespace kavramlarını eşleştir
- namespace
- Kodu paketler
- __NAMESPACE__
- Mevcut adı verir
- \
- Seviye ayracı
- ;
- Bildirimi bitirir