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 :
<?php
namespace Admin\Data;
class Page
{
}
?>
Pour la classe Page du fichier /admin/view/page.php
spécifions l'espace de noms Admin\View :
<?php
namespace Admin\View;
class Page
{
}
?>
Créons des objets de nos classes :
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
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.
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.