Sintaxe de namespaces na POO em PHP

Para definir um namespace para uma classe, é necessário escrever, na primeira linha do arquivo onde essa classe está armazenada, o comando namespace, e após ele, separado por um espaço, o nome desse namespace.

Se uma classe pertence a um namespace, para criar um objeto da classe será necessário especificar não apenas o nome da classe, mas também seu namespace, separados por uma barra invertida. Vamos ver um exemplo.

Suponha que temos uma classe Page, que não pertence a nenhum namespace. Nesse caso, criamos um objeto dessa classe da seguinte forma:

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

Agora, suponha que esta classe pertença ao namespace Admin. Neste caso, criamos um objeto desta classe da seguinte forma:

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

Vamos separar as classes para usuários e classes para administradores em namespaces diferentes, para evitar os conflitos de classes descritos anteriormente.

Para a classe Page do arquivo /admin/page.php, especificamos o namespace Admin:

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

E para a classe Page do arquivo /users/page.php, especificamos o namespace Users:

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

Agora, vamos no arquivo /index.php criar um objeto de cada uma das classes Page:

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

Suponha que você tenha uma pasta core e uma pasta project. Em cada uma das pastas existe sua própria classe Controller. Faça com que essas classes pertençam a namespaces diferentes. No arquivo index.php crie objetos de cada uma das classes.