PHP Espaces de noms
Espaces de noms PHP
Les espaces de noms sont des qualificateurs qui résolvent deux problèmes différents :
- Ils permettent une meilleure organisation en regroupant des classes qui travaillent ensemble pour accomplir une tâche.
- Ils permettent d'utiliser le même nom pour plusieurs classes.
Par exemple, vous pouvez avoir un ensemble de classes qui décrivent un tableau HTML, comme Table, Row et Cell, tout en ayant également un autre ensemble de classes pour décrire des meubles, comme Table, Chair et Bed. Les espaces de noms peuvent être utilisés pour organiser les classes en deux groupes différents tout en évitant la confusion entre les deux classes nommées Table.
Déclaration d'un espace de noms
Les espaces de noms sont déclarés au début d'un fichier en utilisant le mot-clé namespace :
Syntaxe
Déclarez un espace de noms appelé Html :
<?php
namespace Html;
?> Remarque : Une déclaration d'espace de noms doit être la première chose dans le fichier PHP. Le code suivant est invalide :
<?php
echo "Hello World!";
namespace Html;
...
?> Les constantes, classes et fonctions déclarées dans ce fichier appartiendront à l'espace de noms Html :
Exemple
Créez une classe Table dans l'espace de noms Html :
<?php
namespace Html;
class Table {
public $title = "";
public $numRows = 0;
public function message() {
echo "<p>La table '{$this->title}' a {$this->numRows} lignes.</p>";
}
}
$table = new Table();
$table->title = "Ma table";
$table->numRows = 5;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$table->message();
?>
</body>
</html> Pour une meilleure organisation, il est possible d'avoir des espaces de noms imbriqués :
Syntaxe
Déclarez un espace de noms appelé Html à l'intérieur d'un espace de noms appelé Code :
<?php
namespace Code\Html;
?> Utilisation des espaces de noms
Tout code qui suit une déclaration d'espace de noms fonctionne à l'intérieur de cet espace, donc les classes qui lui appartiennent peuvent être instanciées sans aucun qualificateur. Pour accéder aux classes depuis l'extérieur d'un espace de noms, il faut que la classe ait l'espace de noms qui lui est attaché.
Exemple
Utilisez des classes de l'espace de noms Html :
<?php
$table = new Html\Table();
$row = new Html\Row();
?> Lorsque plusieurs classes du même espace de noms sont utilisées en même temps, il est plus facile d'utiliser le mot-clé namespace :
Exemple
Utilisez des classes de l'espace de noms Html sans avoir besoin du qualificateur Html\ :
<?php
namespace Html;
$table = new Table();
$row = new Row();
?> Alias d'espace de noms
Il peut être utile de donner un alias à un espace de noms ou à une classe pour faciliter l'écriture. Cela se fait avec le mot-clé use :
Exemple
Donnez un alias à un espace de noms :
<?php
use Html as H;
$table = new H\Table();
?> Exemple
Donnez un alias à une classe :
<?php
use Html\Table as T;
$table = new T();
?>