Maison  >  Article  >  développement back-end  >  Comment utiliser le mot-clé use dans l'espace de noms php

Comment utiliser le mot-clé use dans l'espace de noms php

青灯夜游
青灯夜游original
2021-09-30 17:05:173705parcourir

En PHP, le mot-clé use peut être utilisé pour importer un espace de noms avec la syntaxe « utiliser l'espace de noms ; » ; il peut également être utilisé pour importer des fonctions et des constantes et définir des alias pour elles, avec la syntaxe « utiliser l'espace de noms comme alias ; » .

Comment utiliser le mot-clé use dans l'espace de noms php

L'environnement d'exploitation de ce tutoriel : système windows7, version PHP7.1, ordinateur DELL G3

Qu'est-ce qu'un espace de noms ?

Au sens large, l'espace de noms est une manière d'encapsuler des choses, et ce concept abstrait peut être vu à de nombreux endroits. Par exemple, les répertoires sont utilisés dans les systèmes d'exploitation pour regrouper les fichiers associés et agissent comme des espaces de noms pour les fichiers du répertoire.

Définition de l'espace de noms

L'espace de noms en PHP a été ajouté en PHP5.3 Si vous connaissez le C++, l'espace de noms n'a rien de nouveau. Cependant, les espaces de noms restent très importants en PHP.

L'espace de noms PHP peut résoudre les deux types de problèmes suivants :

  • Conflits de noms entre le code écrit par l'utilisateur et les classes/fonctions/constantes internes de PHP ou les classes/fonctions/constantes tierces

  • est très long Créer ; un nom alias (ou court) pour le nom de l'identifiant (souvent défini pour pallier le premier type de problème) pour améliorer la lisibilité du code source.

Définissez un espace de noms (en utilisant le mot-clé namespace)

Bien que tout code PHP légal puisse être inclus dans un espace de noms, seules les classes (y compris les classes et traits abstraits), les interfaces, les fonctions et les constantes sont affectées par espaces de noms.

La définition d'un espace de noms doit être déclarée via le mot-clé namespace. Le format de syntaxe est le suivant :

namespace 命名空间名;

[Exemple] Montrons comment définir l'espace de noms :

<?php
    namespace MyProject;    // 定义名为 MyProject 的命名空间。
    const CONNECT_OK = 1;
    class Myclass {
        /* ... */
    }
    function Myfunc() {
        /* ... */
    }
?>

En plus de définir l'encodage du fichier source avant de déclarer. l'espace de noms À l'exception de l'instruction declare de cette manière, tout code non PHP (y compris les caractères d'espacement) ne peut pas apparaître avant la déclaration de l'espace de noms.

Utilisation d'espaces de noms : alias/import

PHP permet l'utilisation d'espaces de noms externes via des références d'alias ou des importations, ce qui est une fonctionnalité importante des espaces de noms. Ceci est quelque peu similaire à la façon dont vous pouvez créer des liens symboliques vers d'autres fichiers ou répertoires dans un système de fichiers de type Unix.

Utilisez le mot-clé use pour implémenter l'importation d'espace de noms. À partir de PHP5.6, les fonctions et les constantes peuvent être importées et des alias sont définis pour elles. Le format de syntaxe est le suivant :

use namespace;

En PHP, les alias sont implémentés via les opérateurs use et as. Le format de syntaxe est le suivant :

use 命名空间 as 别名;

[Exemple] Utilisez l'opérateur use pour importer et utiliser des alias.

<?php
    namespace foo;
    use My\Full\Classname as Another;
    // 下面的例子与 use My\Full\NSname as NSname 相同
    use My\Full\NSname;
    // 导入一个全局类
    use ArrayObject;
    // 导入一个函数
    use function My\Full\functionName;
    // 导入一个函数并定义别名
    use function My\Full\functionName as func;
    // 导入一个常量
    use const My\Full\CONSTANT;
    $obj = new namespace\Another;   // 实例化 foo\Another 对象
    $obj = new Another;             // 实例化 My\Full\Classname 对象
    NSname\subns\func();            // 调用 My\Full\NSname\subns\func 函数
    $a = new ArrayObject(array(1)); // 实例化 ArrayObject 对象
                                    // 如果不使用 "use \ArrayObject" ,则实例化一个 foo\ArrayObject 对象
    func();                         // 调用 My\Full\functionName 函数
    echo CONSTANT;                  // 打印 My\Full\CONSTANT 常量
?>

Remarque : Pour les noms dans un espace de noms (noms complets qui incluent des séparateurs d'espace de noms, tels que FooBar, et noms globaux relatifs qui n'incluent pas de séparateurs d'espace de noms, tels que FooBar), la barre oblique inverse de début est inutile et déconseillée, telle qu'importée. les noms doivent être pleinement qualifiés et ne seront pas résolus par rapport à l’espace de noms actuel.

Afin de simplifier l'opération, PHP prend également en charge l'importation de plusieurs espaces de noms sur une seule ligne, séparés par,. L'exemple de code est le suivant :

<?php
    use My\Full\Classname as Another, My\Full\NSname;
    $obj = new Another;     // 实例化 My\Full\Classname 对象
    NSname\subns\func();    // 调用 My\Full\NSname\subns\func 函数
?>

L'opération d'importation est compilée et exécutée, mais le nom de la classe dynamique, le nom de la fonction ou le nom de la constante est non.

<?php
    use My\Full\Classname as Another, My\Full\NSname;
    $obj = new Another; // 实例化一个 My\Full\Classname 对象
    $a = &#39;Another&#39;;
    $obj = new $a;      // 实际化一个 Another 对象
?>

De plus, l'opération d'importation ne concerne que les noms non qualifiés et qualifiés. Les noms pleinement qualifiés ne sont pas affectés par les importations car ils sont déterministes.

Apprentissage recommandé : "Tutoriel vidéo PHP"

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