Синтаксис пространств имен
Чтобы задать классу пространство имен, нужно
первой строчкой файла, в котом хранится этот
класс написать команду namespace,
а после нее через пробел - название этого
пространства.
Если класс относится к какому-нибудь пространству имен, то для создания объекта класса нужно будет указать не только имя класса, но и его пространство имен, разделенные обратным слешем. Давайте посмотрим на примере.
Пусть у нас есть класс Page, не относящийся
ни к какому пространству имен. Тогда объект
этого класса мы создадим следующим образом:
<?php
$page = new Page;
?>
Пусть теперь этот класс принадлежит пространству
имен Admin. В этом случае объект этого
класса мы будем создавать уже вот таким образом:
<?php
$page = new \Admin\Page;
?>
Пример
Давайте разнесем классы для юзеров и классы для админа по разным пространствам имен, чтобы избежать описанных выше конфликтов классов.
Для класса Page из файла /admin/page.php
укажем пространство имен Admin:
<?php
namespace Admin;
class Page
{
}
?>
А для класса Page из файла /users/page.php
укажем пространство имен Users:
<?php
namespace Users;
class Page
{
}
?>
Давайте теперь в файле /index.php
создадим объект одного и второго
класса Page:
<?php
require_once '/admin/page.php';
require_once '/users/page.php';
$adminPage = new \Admin\Page;
$usersPage = new \Users\Page;
?>
Практические задачи
Пусть у вас есть папка core и папка
project. В каждой из папок есть свой
класс Controller. Сделайте так, чтобы
эти классы принадлежали разным пространствам
имен. В файле index.php создайте объекты
одного и второго классов.