PHP'de OOP İsim Alanları Alt Uzayları
Şimdi daha karmaşık bir durumumuz olduğunu varsayalım:
yönetici için iki Page sınıfı yapmamız gerekiyor
- biri sayfa verileriyle, diğeri ise bu verilerin
görünümüyle ilgili. İlk sınıfın /admin/data/page.php dosyasında,
ikincisinin ise /admin/view/page.php dosyasında
olduğunu varsayalım.
Önceki derslerde, admin klasöründeki tüm sınıfların
Admin isim alanına ait olacağına zaten karar vermiştik.
Ancak, şimdi bu isim alanında iki sınıf çakışması var.
Sorunu çözmek için ek alt isim alanları oluşturulabilir.
Örneğin, Admin isim alanı ve onun içinde Data
ve View alt isim alanları oluşturulabilir.
Bu durumda, bu alt isim alanlarının isimleri hem isim alanı
tanımlanırken hem de sınıf nesnesi oluşturulurken
ters eğik çizgi ile yazılır.
Burada, alt isim alanlarının iç içe geçme seviyesinin sınırsız olduğu belirtilmelidir (alt isim alanları içinde alt alt isim alanları oluşturulabilir ve bu böyle devam eder).
Öyleyse, yukarıda açıklanan örneğimizi tamamlayalım.
/admin/data/page.php dosyasındaki Page sınıfı için
Admin\Data isim alanını belirtelim:
<?php
namespace Admin\Data;
class Page
{
}
?>
/admin/view/page.php dosyasındaki Page sınıfı için
Admin\View isim alanını belirtelim:
<?php
namespace Admin\View;
class Page
{
}
?>
Sınıflarımızın nesnelerini oluşturalım:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
modules/cart klasörünüz olduğunu varsayalım.
Bu klasördeki tüm sınıfların Modules\Cart
isim alanına ait olmasını sağlayın.
modules/shop/cart/ klasörünüz olduğunu varsayalım.
Bu klasördeki tüm sınıfların Modules\Shop\Cart
isim alanına ait olmasını sağlayın.