PHP'de OOP İsim Alanları Sözdizimi
Bir sınıfa bir isim alanı atamak için,
o sınıfın saklandığı dosyanın
ilk satırına namespace komutunu yazmanız,
ve ondan sonra bir boşlukla - bu isim alanının
adını yazmanız gerekir.
Eğer bir sınıf herhangi bir isim alanına aitsa, sınıf nesnesi oluşturmak için yalnızca sınıf adını değil, aynı zamanda onun isim alanını da, ters eğik çizgi ile ayrılmış olarak belirtmemiz gerekecek. Bir örnek üzerinde görelim.
Bir Page sınıfımız olduğunu ve hiçbir isim alanına
ait olmadığını varsayalım. Bu durumda bu sınıfın
nesnesini şu şekilde oluştururuz:
<?php
$page = new Page;
?>
Şimdi bu sınıfın Admin isim alanına
ait olduğunu varsayalım. Bu durumda bu sınıfın
nesnesini artık şu şekilde oluşturacağız:
<?php
$page = new \Admin\Page;
?>
Yukarıda açıklanan sınıf çakışmalarından kaçınmak için, kullanıcı sınıflarını ve yönetici sınıflarını farklı isim alanlarına ayıralım.
/admin/page.php dosyasındaki Page
sınıfı için Admin isim alanını belirtelim:
<?php
namespace Admin;
class Page
{
}
?>
Ve /users/page.php dosyasındaki Page sınıfı
için Users isim alanını belirtelim:
<?php
namespace Users;
class Page
{
}
?>
Şimdi /index.php dosyasında
birinci ve ikinci Page
sınıfının nesnelerini oluşturalım:
<?php
require_once '/admin/page.php';
require_once '/users/page.php';
$adminPage = new \Admin\Page;
$usersPage = new \Users\Page;
?>
Bir core klasörünüz ve bir
project klasörünüz olduğunu varsayalım.
Her klasörün kendi Controller sınıfı var.
Bu sınıfların farklı isim alanlarına
ait olmasını sağlayın. index.php dosyasında
birinci ve ikinci sınıfların nesnelerini oluşturun.