Maison  >  Article  >  développement back-end  >  Espace de noms PHP

Espace de noms PHP

王林
王林original
2024-08-29 13:00:16766parcourir

Les espaces de noms en PHP sont similaires aux espaces de noms en C++ qui encapsulent les éléments en réutilisant les noms afin d'éviter les conflits de noms. Il est également considéré comme un concept abstrait dans de nombreuses situations. Il permet de re-déclarer les mêmes classes, interfaces, fonctions ou fonctions constantes dans un espace de noms distinct sans recevoir l'erreur fatale. Cet espace de noms est un bloc de code étiqueté hiérarchiquement et contenant un code PHP normal. Il s'agit d'un code PHP valide. De plus, cela affecte les types de code tels que les classes, les fonctions, les constantes et les interfaces. Un espace de noms est déclaré à l'aide du mot-clé namespace.

PUBLICITÉ Cours populaire dans cette catégorie DEVELOPPEUR PHP - Spécialisation | Série de 8 cours | 3 tests simulés

Commencez votre cours de développement de logiciels libres

Développement Web, langages de programmation, tests de logiciels et autres

Syntaxe :

namespace sample;

Ici, un exemple d'espace de noms est déclaré.

Semblable aux autres identifiants PHP, l'espace de noms doit également suivre certaines règles. Autrement dit, un espace de noms doit commencer par un trait de soulignement ou une lettre, suivi de lettres, de traits de soulignement ou de chiffres.

Comment fonctionne l'espace de noms en PHP ?

Imaginons un espace de noms comme une armoire où nous pouvons conserver tous les objets tels que des robes, des accessoires, etc. Pour chaque personne, il y aura une armoire séparée qui pourra stocker ses objets. Afin d’identifier le placard de chacun, une étiquette peut être attribuée à chacun afin d’éviter toute confusion. Dans le passé, les programmeurs séparaient les bases de code à l'aide de traits de soulignement dans les constantes, les classes et les fonctions. C’est comme étiqueter les objets de chacun et les conserver dans une grande armoire. Même si c'est organisé, l'efficacité ne sera pas plus élevée.

Dans cette situation, le concept d'espace de noms apparaît. La même classe, interface, fonction et constante peuvent être déclarées dans différents espaces de noms sans aucune erreur fatale. Fondamentalement, l'espace de noms est un bloc de code étiqueté hiérarchiquement et contenant un code PHP normal.

Comme nous l'avons déjà mentionné, les espaces de noms en PHP encapsulent les éléments en réutilisant les noms pour éviter les conflits de noms.

Par exemple, considérons un programme PHP comme mentionné ci-dessous.

Code :

<?php
namespace sample ;
function func()
{
echo ' Never give up! Keep trying . . . ' ;
}
// Resolves to the function
func() ;
?>

On voit qu'une fonction func est présente, et elle imprime un texte lors de l'exécution du code.

À mesure que la taille de la bibliothèque de code PHP augmente, il existe un risque de réutiliser involontairement un nom de classe ou une fonction déjà déclarée. Le problème est exacerbé si des composants et des plugins tiers sont ajoutés. De plus, les problèmes de collision de noms peuvent être résolus à l’aide d’espaces de noms. Les constantes, fonctions et classes PHP peuvent être regroupées dans des bibliothèques d'espaces de noms. Ces espaces de noms peuvent suivre une hiérarchie spécifique, similaire aux dossiers disponibles dans le système de fichiers de l'ordinateur. Le concept de sous-espaces de noms est très utile pour organiser la structure du projet. Si le projet a besoin d'un accès à la base de données, tous les codes liés à la base de données, comme les exceptions d'une base de données, les gestionnaires de connexion, peuvent être conservés dans un sous-espace de noms appelé DB.

Pour conserver la flexibilité, il est préférable de sauvegarder les sous-espaces de noms dans des sous-répertoires. Cela inspire la structuration du projet et facilite l'utilisation de chargeurs automatiques qui suivent la norme PSR-0.

Normalement, une barre oblique inverse sera utilisée en PHP comme séparateur d'espace de noms.

ExempleSous-échantillon
SampleSubSampleSamp
CollegeProjCommonWidget

Dans les cas où une déclaration d'espace de noms est effectuée globalement, elle peut être déclarée sans utiliser de nom, comme indiqué ci-dessous.

Code :

<?php
namespace {
// Global . . . !
}
?>

Dans certains cas, plusieurs espaces de noms peuvent être utilisés dans un même code PHP, comme indiqué ci-dessous.

Code :

<?php
namespace sam {
}
namespace samp {
}
namespace {
}
?>
Remarque : Il convient de noter que l'espace de noms doit être déclaré en premier dans le programme PHP. Si un code est donné ci-dessous, il sera détecté comme invalide car l'espace de noms n'est pas fourni initialement.

Code :

<?php
echo "Never Give up ! " ;
namespace Html ;
. . .
?>

Exemples d'espace de noms PHP

Vous trouverez ci-dessous des exemples d'espace de noms PHP :

Exemple n°1

Programme PHP qui utilise un espace de noms et appelle une fonction à la fois implicitement et explicitement.

Code :

<?php
namespace sample;
function func()
{
echo 'Never give up! Keep trying. . .';
}
// Resolves to the function
func();
// Explicitly resolves to the function
namespace\func();
?>

Sortie :

Espace de noms PHP

Dans le programme, un exemple d'espace de noms est créé en premier. Après cela, on peut voir qu'une fonction func est définie et elle imprime un texte lors de l'exécution du code. Comme la fonction est appelée implicitement et explicitement, le texte est imprimé deux fois.

Supposons que l'espace de noms soit déclaré après avoir défini la fonction, comme indiqué ci-dessous. Alors, que va-t-il se passer ?

Code :

<?php
function func()
{
echo 'Never give up! Keep trying. . .';
}
// Resolves to the function
func();
namespace sample;
// Explicitly resolves to the function
namespace\func();
?>

Yes…. An error will be displayed, as shown below. That is, namespace should be defined at the beginning of the program.

Output:

Espace de noms PHP

Example #2

PHP program that uses a namespace and calls a function for printing table details.

Code:

<?php
namespace Html;
class sampletable {
public $heading= "";
public $cntrows= 0;
public function fnc() {
echo "<p> The Table used is '{$this->heading}' that has {$this->cntrows} different rows. . . .</p>";
}
}
$tb= new sampletable ();
$tb->heading= " Students ";
$tb->cntrows= 8 ;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$tb->fnc();
?>
</body>
</html>

Output:

Espace de noms PHP

In the program, a namespace Html is created first. After that, a class sampletable is created with variables heading, cnt rows. A function func is also present, which contains a text. Heading students and 8 as count of rows were given after that. On executing the code, the line gets printed with the table name and number of rows.

Conclusion

Namespaces in PHP is similar to namespaces in C++ that encapsulates items by reusing names in order to avoid name conflicts. In this article, different aspects such as syntax, working, and examples of size() functions are explained in detail.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Sous-titre PHPArticle suivant:Sous-titre PHP