Syntax prostorů jmen v OOP v PHP
Chcete-li třídě nastavit prostor jmen, je třeba
jako první řádek souboru, ve kterém je tato
třída uložena, napsat příkaz namespace,
a za ním přes mezeru - název tohoto
prostoru.
Pokud třída patří do nějakého prostoru jmen, pak pro vytvoření objektu třídy bude nutné uvést nejen název třídy, ale také její prostor jmen, oddělené zpětným lomítkem. Podívejme se na příklad.
Předpokládejme, že máme třídu Page, která nepatří
do žádného prostoru jmen. Potom objekt
této třídy vytvoříme následujícím způsobem:
<?php
$page = new Page;
?>
Nyní předpokládejme, že tato třída patří do prostoru
jmen Admin. V tomto případě budeme objekt této
třídy vytvářet již tímto způsobem:
<?php
$page = new \Admin\Page;
?>
Rozdělme třídy pro uživatele a třídy pro adminy do různých prostorů jmen, abychom předešli výše popsaným konfliktům tříd.
Pro třídu Page ze souboru /admin/page.php
nastavme prostor jmen Admin:
<?php
namespace Admin;
class Page
{
}
?>
A pro třídu Page ze souboru /users/page.php
nastavme prostor jmen Users:
<?php
namespace Users;
class Page
{
}
?>
Nyní v souboru /index.php
vytvořme objekt první i druhé
třídy Page:
<?php
require_once '/admin/page.php';
require_once '/users/page.php';
$adminPage = new \Admin\Page;
$usersPage = new \Users\Page;
?>
Předpokládejme, že máte složku core a složku
project. V každé ze složek je její vlastní
třída Controller. Zařiďte, aby
tyto třídy patřily do různých prostorů
jmen. V souboru index.php vytvořte objekty
první i druhé třídy.