Sintaxa spațiilor de nume în OOP în PHP
Pentru a atribui unui clasă un spațiu de nume, trebuie
să scrieți prima linie a fișierului în care este stocată această
clasă comanda namespace,
iar după ea, prin spațiu - numele acestui
spațiu.
Dacă o clasă aparține unui spațiu de nume, atunci pentru a crea un obiect al clasei va trebui să specificați nu numai numele clasei, ci și spațiul său de nume, separate prin backslash. Să vedem un exemplu.
Să presupunem că avem o clasă Page, care nu aparține
niciunui spațiu de nume. Atunci obiectul
acestei clase îl vom crea în felul următor:
<?php
$page = new Page;
?>
Să presupunem acum că această clasă aparține spațiului de nume
Admin. În acest caz, obiectul acestei
clase îl vom crea deja în felul următor:
<?php
$page = new \Admin\Page;
?>
Să separăm clasele pentru utilizatori și clasele pentru administratori în diferite spații de nume, pentru a evita conflictele de clase descrise mai sus.
Pentru clasa Page din fișierul /admin/page.php
să specificăm spațiul de nume Admin:
<?php
namespace Admin;
class Page
{
}
?>
Iar pentru clasa Page din fișierul /users/page.php
să specificăm spațiul de nume Users:
<?php
namespace Users;
class Page
{
}
?>
Să creăm acum în fișierul /index.php
un obiect al primei și al celei de-a doua
clase Page:
<?php
require_once '/admin/page.php';
require_once '/users/page.php';
$adminPage = new \Admin\Page;
$usersPage = new \Users\Page;
?>
Să presupunem că aveți folderul core și folderul
project. În fiecare folder există propria
clasă Controller. Faceți astfel încât
aceste clase să aparțină unor spații de nume diferite.
În fișierul index.php creați obiecte
ale primei și celei de-a doua clase.