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:
<?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:
<?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:
<?php
namespace Admin;
class Page
{
}
?>
A Page osztályhoz pedig a /users/page.php fájlban
adjuk meg a Users névteret:
<?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:
<?php
require_once '/admin/page.php';
require_once '/users/page.php';
$adminPage = new \Admin\Page;
$usersPage = new \Users\Page;
?>
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.