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:

index.php<?php
  $page = new Page;
?>

Pretpostavimo sada da ovaj klas pripada imenskom prostoru Admin. U ovom slučaju objekat ovog klasa kreiraćemo već ovako:

index.php<?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:

/admin/page.php<?php
  namespace Admin;
  
  class Page
  {
    
  }
?>

A za klas Page iz fajla /users/page.php navedimo imenski prostor Users:

/users/page.php<?php
  namespace Users;
  
  class Page
  {
    
  }
?>

Hajde sada u fajlu /index.php da kreiramo objekat jedne i druge klase Page:

index.php<?php
  require_once '/admin/page.php';
  require_once '/users/page.php';
  
  $adminPage = new \Admin\Page;
  $usersPage = new \Users\Page;
?>
Задание 1

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.