Синтаксис пространств имен в ООП в PHP

Чтобы задать классу пространство имен, нужно первой строчкой файла, в котом хранится этот класс написать команду namespace, а после нее через пробел - название этого пространства.

Если класс относится к какому-нибудь пространству имен, то для создания объекта класса нужно будет указать не только имя класса, но и его пространство имен, разделенные обратным слешем. Давайте посмотрим на примере.

Пусть у нас есть класс Page, не относящийся ни к какому пространству имен. Toгда объект этого класса мы создадим следующим образом:

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

Пусть теперь этот класс принадлежит пространству имен Admin. В этом случае объект этого класса мы будем создавать уже вот таким образом:

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

Давайте разнесем классы для юзеров и классы для админа по разным пространствам имен, чтобы избежать описанных выше конфликтов классов.

Для класса Page из файла /admin/page.php укажем пространство имен Admin:

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

А для класса Page из файла /users/page.php укажем пространство имен Users:

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

Давайте теперь в файле /index.php создадим объект одного и второго класса Page:

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

Пусть у вас есть папка core и папка project. В каждой из папок есть свой класс Controller. Сделайте так, чтобы эти классы принадлежали разным пространствам имен. В файле index.php создайте объекты одного и второго классов.