Espaces de noms PHP
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 effectuer 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, telles que Table, Row et Cell, tout en ayant également un autre ensemble de classes pour décrire des meubles, tels que Table, Chair et Bed. Les espaces de noms peuvent être utilisés pour organiser les classes en deux groupes différents tout en évitant que les deux classes Table et Table ne soient mélangées.
Déclarer un espace de noms
Les espaces de noms sont déclarés au début d'un fichier à l'aide du mot- namespace
clé :
Syntaxe
Déclarez un espace de noms nommé Html :
namespace Html;
Remarque : Une namespace
déclaration doit être la première chose dans le fichier PHP. Le code suivant serait 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>Table
'{$this->title}' has {$this->numRows} rows.</p>";
}
}
$table = new
Table();
$table->title = "My table";
$table->numRows = 5;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$table->message();
?>
</body>
</html>
Pour plus d'organisation, il est possible d'avoir des espaces de noms imbriqués :
Syntaxe
Déclarez un espace de noms appelé Html dans un espace de noms appelé Code :
namespace Code\Html;
Utilisation des espaces de noms
Tout code qui suit une namespace
déclaration fonctionne à l'intérieur de l'espace de noms, de sorte que les classes qui appartiennent à l'espace de noms peuvent être instanciées sans aucun qualificatif. Pour accéder aux classes depuis l'extérieur d'un espace de noms, la classe doit avoir l'espace de noms qui lui est attaché.
Exemple
Utilisez les classes de l'espace de noms HTML :
$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 simple d'utiliser le mot- namespace
clé :
Exemple
Utilisez les classes de l'espace de noms Html sans avoir besoin du Html\qualificatif :
namespace Html;
$table = new Table();
$row = new Row();
Alias d'espace de noms
Il peut être utile de donner à un espace de noms ou à une classe un alias pour faciliter l'écriture. Cela se fait avec le use
mot clé :
Exemple
Attribuez un alias à un espace de noms :
use Html as H;
$table = new H\Table();
Exemple
Donnez un alias à une classe :
use Html\Table as
T;
$table = new T();