PHP Espaces de noms


Espaces de noms PHP

Les espaces de noms sont des qualificateurs qui résolvent deux problèmes différents :

  1. Ils permettent une meilleure organisation en regroupant des classes qui travaillent ensemble pour accomplir une tâche.
  2. 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>
Essayez-le vous-même »

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();
?>
Essayez-le vous-même »

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();
?>
Essayez-le vous-même »

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();
?>
Essayez-le vous-même »

Exemple

Donnez un alias à une classe :

<?php
use Html\Table as T;
$table = new T();
?>
Essayez-le vous-même »