Sottospazi dei nomi nella OOP in PHP
Supponiamo ora di avere una situazione più complessa:
per l'amministratore è necessario creare due classi Page
- una con i dati della pagina e la seconda - con la rappresentazione
di questi dati. Supponiamo che la prima classe si trovi
nel file /admin/data/page.php, e la seconda
- nel file /admin/view/page.php.
Nelle lezioni precedenti abbiamo già deciso che tutte le classi dalla cartella
admin apparterranno allo spazio dei nomi
Admin. Tuttavia, ora in questo
stesso spazio dei nomi abbiamo un conflitto tra due classi.
Per risolvere il problema si possono creare ulteriori
sottospazi dei nomi. Ad esempio, si può creare
lo spazio dei nomi Admin, e al suo interno i sottospazi
Data e View. In questo caso
il nome di questi sottospazi viene semplicemente scritto
attraverso la barra rovesciata - sia quando si definisce lo spazio dei nomi,
sia quando si crea un oggetto della classe.
Qui è necessario chiarire che il livello di annidamento dei sottospazi non è limitato (si possono creare sotto-sottospazi all'interno dei sottospazi e così via).
Quindi, completiamo il nostro esempio descritto sopra.
Per la classe Page dal file /admin/data/page.php
indichiamo lo spazio dei nomi Admin\Data:
<?php
namespace Admin\Data;
class Page
{
}
?>
Per la classe Page dal file /admin/view/page.php
indichiamo lo spazio dei nomi Admin\View:
<?php
namespace Admin\View;
class Page
{
}
?>
Creiamo gli oggetti delle nostre classi:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
Supponiamo di avere la cartella modules/cart.
Fate in modo che tutte le classi di questa cartella
appartengano allo spazio dei nomi
Modules\Cart.
Supponiamo di avere la cartella modules/shop/cart/.
Fate in modo che tutte le classi di questa cartella
appartengano allo spazio dei nomi
Modules\Shop\Cart.