Sous-espaces de noms en POO en PHP

Supposons maintenant que nous ayons une situation plus complexe : pour l'administrateur, il faut créer deux classes Page - une avec les données de la page, et la seconde - avec la représentation de ces données. Supposons que la première classe se trouve dans le fichier /admin/data/page.php, et la seconde - dans le fichier /admin/view/page.php.

Dans les leçons précédentes, nous avons déjà décidé que toutes les classes du dossier admin appartiendraient à l'espace de noms Admin. Cependant, maintenant, dans ce même espace de noms, nous avons un conflit entre deux classes. Pour résoudre le problème, on peut créer des sous-espaces de noms supplémentaires. Par exemple, on peut créer l'espace de noms Admin, et dedans les sous-espaces Data et View. Dans ce cas, les noms de ces sous-espaces sont simplement écrits avec une barre oblique inversée - à la fois lors de la définition de l'espace de noms et lors de la création d'un objet de la classe.

Il convient de préciser ici que le niveau d'imbrication des sous-espaces n'est pas limité (on peut créer des sous-sous-espaces dans les sous-espaces et ainsi de suite).

Alors, terminons notre exemple décrit ci-dessus. Pour la classe Page du fichier /admin/data/page.php spécifions l'espace de noms Admin\Data :

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

Pour la classe Page du fichier /admin/view/page.php spécifions l'espace de noms Admin\View :

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

Créons des objets de nos classes :

/index.php<?php
  require_once '/admin/data/page.php';
  require_once '/admin/view/page.php';
  
  $adminDataPage = new \Admin\Data\Page;
  $adminViewPage = new \Admin\View\Page;
?>
Задание 1

Supposons que vous ayez un dossier modules/cart. Faites en sorte que toutes les classes de ce dossier appartiennent à l'espace de noms Modules\Cart.

Задание 2

Supposons que vous ayez un dossier modules/shop/cart/. Faites en sorte que toutes les classes de ce dossier appartiennent à l'espace de noms Modules\Shop\Cart.