Syntaxe des espaces de noms en POO en PHP
Pour attribuer un espace de noms à une classe, il faut
écrire en première ligne du fichier dans lequel est stockée cette
classe la commande namespace,
et après elle, séparé par un espace - le nom de cet
espace de noms.
Si une classe appartient à un espace de noms, alors pour créer un objet de la classe, il faudra spécifier non seulement le nom de la classe, mais aussi son espace de noms, séparés par une barre oblique inversée. Regardons un exemple.
Supposons que nous ayons une classe Page, n'appartenant
à aucun espace de noms. Alors un objet
de cette classe sera créé comme suit :
<?php
$page = new Page;
?>
Supposons maintenant que cette classe appartienne à l'espace de noms
Admin. Dans ce cas, un objet de cette
classe sera créé de cette manière :
<?php
$page = new \Admin\Page;
?>
Séparons les classes pour les utilisateurs et les classes pour les administrateurs dans différents espaces de noms, afin d'éviter les conflits de classes décrits ci-dessus.
Pour la classe Page du fichier /admin/page.php
spécifions l'espace de noms Admin :
<?php
namespace Admin;
class Page
{
}
?>
Et pour la classe Page du fichier /users/page.php
spécifions l'espace de noms Users :
<?php
namespace Users;
class Page
{
}
?>
Créons maintenant dans le fichier /index.php
un objet de chacune des deux
classes Page :
<?php
require_once '/admin/page.php';
require_once '/users/page.php';
$adminPage = new \Admin\Page;
$usersPage = new \Users\Page;
?>
Supposons que vous ayez un dossier core et un dossier
project. Dans chaque dossier se trouve sa propre
classe Controller. Faites en sorte que
ces classes appartiennent à des espaces de noms différents.
Dans le fichier index.php, créez des objets
de chacune des deux classes.