Sintaxis de espacios de nombres en POO en PHP
Para asignar un espacio de nombres a una clase, es necesario
escribir como primera línea del archivo en el que se almacena
esta clase el comando namespace,
y después de él, separado por un espacio, el nombre de este
espacio.
Si una clase pertenece a algún espacio de nombres, entonces para crear un objeto de la clase será necesario especificar no solo el nombre de la clase, sino también su espacio de nombres, separados por una barra invertida. Veamos un ejemplo.
Supongamos que tenemos una clase Page, que no pertenece
a ningún espacio de nombres. Entonces, el objeto
de esta clase lo crearemos de la siguiente manera:
<?php
$page = new Page;
?>
Supongamos ahora que esta clase pertenece al espacio de nombres
Admin. En este caso, el objeto de esta
clase lo crearemos de esta manera:
<?php
$page = new \Admin\Page;
?>
Separemos las clases para usuarios y las clases para administradores en diferentes espacios de nombres, para evitar los conflictos de clases descritos anteriormente.
Para la clase Page del archivo /admin/page.php
indicaremos el espacio de nombres Admin:
<?php
namespace Admin;
class Page
{
}
?>
Y para la clase Page del archivo /users/page.php
indicaremos el espacio de nombres Users:
<?php
namespace Users;
class Page
{
}
?>
Ahora, en el archivo /index.php
creemos un objeto de una y otra
clase Page:
<?php
require_once '/admin/page.php';
require_once '/users/page.php';
$adminPage = new \Admin\Page;
$usersPage = new \Users\Page;
?>
Supongamos que tienes una carpeta core y una carpeta
project. En cada una de las carpetas hay su propia
clase Controller. Haz que
estas clases pertenezcan a diferentes espacios de
nombres. En el archivo index.php crea objetos
de una y otra clase.