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:
<?php
namespace Admin\Data;
class Page
{
}
?>
Para la clase Page del archivo /admin/view/page.php
indiquemos el espacio de nombres Admin\View:
<?php
namespace Admin\View;
class Page
{
}
?>
Creemos objetos de nuestras clases:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
Supongamos que tiene la carpeta modules/cart.
Haga que todas las clases de esta carpeta
pertenezcan al espacio de nombres
Modules\Cart.
Supongamos que tiene la carpeta modules/shop/cart/.
Haga que todas las clases de esta carpeta
pertenezcan al espacio de nombres
Modules\Shop\Cart.