Subespacios de nombres en POO en PHP

Supongamos ahora que tenemos una situación más compleja: para el administrador necesitamos hacer dos clases Page - una con los datos de la página, y la segunda - con la representación de estos datos. Supongamos que la primera clase se encuentra en el archivo /admin/data/page.php, y la segunda - en el archivo /admin/view/page.php.

En lecciones anteriores ya decidimos que todas las clases de la carpeta admin pertenecerán al espacio de nombres Admin. Sin embargo, ahora en este mismo espacio de nombres tenemos un conflicto de dos clases. Para resolver el problema se pueden hacer adicionales subespacios de nombres. Por ejemplo, se puede hacer el espacio de nombres Admin, y en él los subespacios Data y View. En tal caso, los nombres de estos subespacios simplemente se escriben con una barra invertida - tanto al definir el espacio de nombres, como al crear un objeto de la clase.

Aquí cabe aclarar que el nivel de anidamiento de los subespacios no está limitado (se pueden crear sub subespacios en subespacios y así sucesivamente).

Entonces, terminemos nuestro ejemplo descrito arriba. Para la clase Page del archivo /admin/data/page.php indiquemos el espacio de nombres Admin\Data:

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

Para la clase Page del archivo /admin/view/page.php indiquemos el espacio de nombres Admin\View:

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

Creemos objetos de nuestras clases:

/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

Supongamos que tiene la carpeta modules/cart. Haga que todas las clases de esta carpeta pertenezcan al espacio de nombres Modules\Cart.

Задание 2

Supongamos que tiene la carpeta modules/shop/cart/. Haga que todas las clases de esta carpeta pertenezcan al espacio de nombres Modules\Shop\Cart.