Sintaks imenskih prostora u OOP u PHP
Da biste klasi dodelili imenski prostor, potrebno je
kao prvu liniju u fajlu u kojem se taj
klas nalazi napisati komandu namespace,
a iza nje, preko razmaka - naziv tog
prostora.
Ako klas pripada nekom imenskom prostoru, onda za kreiranje objekta klase trebaće biti da navedete ne samo ime klase, već i njegov imenski prostor, odvojene obrnutom kosom crtom. Pogledajmo na primeru.
Pretpostavimo da imamo klas Page, koji ne pripada
nijednom imenskom prostoru. Tada objekat
ove klase kreiramo na sledeći način:
<?php
$page = new Page;
?>
Pretpostavimo sada da ovaj klas pripada imenskom prostoru
Admin. U ovom slučaju objekat ovog
klasa kreiraćemo već ovako:
<?php
$page = new \Admin\Page;
?>
Hajde da razdvojimo klase za korisnike i klase za admine po različitim imenskim prostorima, kako bismo izbegli gore opisane sukobe klasa.
Za klas Page iz fajla /admin/page.php
navedimo imenski prostor Admin:
<?php
namespace Admin;
class Page
{
}
?>
A za klas Page iz fajla /users/page.php
navedimo imenski prostor Users:
<?php
namespace Users;
class Page
{
}
?>
Hajde sada u fajlu /index.php
da kreiramo objekat jedne i druge
klase Page:
<?php
require_once '/admin/page.php';
require_once '/users/page.php';
$adminPage = new \Admin\Page;
$usersPage = new \Users\Page;
?>
Pretpostavimo da imate folder core i folder
project. U svakoj od ovih foldera postoji svoj
klas Controller. Uredite tako da
ovi klasi pripadaju različitim imenskim
prostorima. U fajlu index.php kreirajte objekte
jedne i druge klase.