A névterek szintaxisa az OOP-ben PHP-ben

Ahhoz, hogy egy osztályhoz névteret rendeljünk, annak a fájlnak az első sorába kell írnunk, amelyben ez az osztály található, a namespace parancsot, majd utána szóközzel elválasztva - ennek a névtérnek a nevét.

Ha egy osztály egy névtérhez tartozik, akkor az osztály objektumának létrehozásához nem csak az osztály nevét, hanem a névterét is meg kell adni, visszaperjellel elválasztva. Nézzük meg egy példán.

Tegyük fel, hogy van egy Page osztályunk, amely nem tartozik egyetlen névtérhez sem. Ekkor ennek az osztálynak az objektumát a következőképpen hozzuk létre:

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

Tegyük fel most, hogy ez az osztály a Admin névtérhez tartozik. Ebben az esetben ennek az osztálynak az objektumát már így fogjuk létrehozni:

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

Válasszuk szét a felhasználók és az adminok osztályait különböző névterekbe, hogy elkerüljük a fent leírt osztályütközéseket.

A Page osztályhoz a /admin/page.php fájlban adjuk meg a Admin névteret:

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

A Page osztályhoz pedig a /users/page.php fájlban adjuk meg a Users névteret:

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

Most pedig a /index.php fájlban hozzunk létre objektumot az egyik és a másik Page osztályból:

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

Tegyük fel, hogy van egy core mappája és egy project mappája. Mindkét mappában van saját Controller osztály. Állítsa be úgy, hogy ezek az osztályok különböző névterekhez tartozzanak. A index.php fájlban hozzon létre objektumokat az egyik és a másik osztályból.