Çok seviyeli namespace
Alt\Modül\Sınıf biçiminde çok seviyeli namespace yapısını öğrenirsin.
Çok seviyeli namespace
Namespace'leri alt seviyelere bölerek bir hiyerarşi kurabilirsin: App\Models\User, App\Services\Auth\Login. Burada App vendor (sağlayıcı) önek, Models ve Services alt seviyelerdir.
Her \ bir seviye ayracıdır. PHP bunları bir ağaç olarak görür: App kök, Models ve Services alt dallardır. Bu yapı büyük projelerde düzeni korur.
Vendor prefix neden önemli?
PSR-4 standardında vendor prefix genellikle üretici veya proje adıdır: Symfony\..., Laravel\..., Monolog\.... Bu, farklı kütüphanelerin namespace'lerinin çakışmasını önler.
Kendi projende de App\... veya MyCompany\Project\... gibi özgün bir prefix seçmek iyi bir alışkanlıktır. Prefix ne kadar özgünse çakışma riski o kadar azdır.
Uygulama Çok seviyeli namespace ve sınıf tanımla
namespace App\Services\Auth; tanımla. İçinde Login sınıfı ve public static function attempt($user) metodu olsun; metod "Giriş: " ön ekiyle kullanıcı adını yazdırsın. Sonra Login::attempt("Ayşe") çağır ve __NAMESPACE__ yazdır.
Örnek çözümü göster
" . $user . "\n"; } } ekle. Login::attempt("Ayşe"); ve echo __NAMESPACE__ . "\n"; çağır.
Örnek çözüm:
<?php
namespace App\Services\Auth;
class Login {
public static function attempt($user) {
echo "Giriş: " . $user . "\n";
}
}
Login::attempt("Ayşe");
echo __NAMESPACE__ . "\n";
Kendini test et
-
Çok seviyeli namespace bildirimini tamamla
<?php ____ App\Models\Repository\UserRepository; $info = ["table" => "users"]; class UserRepository {}Cevabı göster
<?php namespace App\Models\Repository\UserRepository; $info = ["table" => "users"]; class UserRepository {} -
Çok seviyeli namespace kavramlarını eşleştir
- App
- Sağlayıcı ön eki
- \
- Seviye ayracı
- App\Models\User
- Üç seviyeli ad
- App\Services\Auth
- Dört seviyeli ad
-
App\Models\User adında App nedir?
- Bir sınıf adı
- Vendor (sağlayıcı) ön eki
- Bir fonksiyon adı
- Bir değişken adı
Cevabı göster
Vendor (sağlayıcı) ön eki — Doğru. App vendor ön ekidir; projenin kök kimliğini belirler.