Maison  >  Article  >  développement back-end  >  Déclaration et utilisation des espaces de noms en php

Déclaration et utilisation des espaces de noms en php

无忌哥哥
无忌哥哥original
2018-06-28 15:52:391763parcourir

* Déclaration et utilisation de l'espace de noms

* 1. Utiliser des mots-clés : espace de noms

* 2.php5.3+

* 3. L'espace de noms ne peut pas exister avant N'importe quel code autre que déclarer et commentaires, ni HTML

* 4. L'espace de noms commence à partir de la position globale par défaut, et l'espace global est représenté par , similaire au répertoire racine

* 5. Si le courant Si le script déclare un espace de noms, l'accès à tous les membres doit utiliser l'espace de noms, y compris les fonctions système

//1 Déclarer un espace de noms

namespace one;
class Demo{public $name='Peter Zhu';}
const SITE='PHP中文网';
function add($a,$b){return $a+$b;}


<.>//Si je souhaite déclarer une classe avec le même nom, les constantes et les fonctions peuvent déclarer un autre espace de noms

//2 Plusieurs espaces de noms sont autorisés dans un script

//Espace de noms de déclaration. : deux, utilisez tow pour référence

namespace two;
//Déclarez maintenant la classe Demo, la constante SITE et la fonction add, il n'y aura pas de conflit

class Demo{public $name=&#39;朱老师&#39;;}
const  SITE = &#39;www.php.cn&#39;;
function add($a,$b){return $a+$b;}
//Je te crois peut le voir Oui, cela revient beaucoup à autoriser la création de fichiers portant le même nom dans des répertoires différents. Le principe est le même

echo (new Demo)->name, &#39;<br>&#39;; //默认输出的是当前空间的内容
//Vérifier quel est l'espace de noms actuel ? constante : __NAMESPACE__

echo &#39;当前命名空间是: &#39;,__NAMESPACE__,&#39;<br>&#39;;
//Vous pouvez également apporter l'espace de noms actuel pour accéder aux membres de l'espace actuel

//Générer un nom de classe avec l'espace de noms actuel

$className = __NAMESPACE__.&#39;\Demo&#39;;
echo (new $className)->name,&#39;<br>&#39;;
//Vous pouvez apporter le nom complet de l'espace de noms, en commençant par l'espace global, ce qui équivaut à partir du répertoire racine

//Terminologie professionnelle : nom complet

echo (new \two\Demo)->name, &#39;<hr>&#39;;
//3. Comment obtenir un accès inter-espace ?

//Si nous voulons accéder aux attributs de la classe Démo dans l'espace un, comment opérer

//Inter-espace ? l'accès est le même que l'accès inter-répertoire aux fichiers, assurez-vous d'apporter son chemin d'espace complet

//Par exemple, nous voulons accéder aux membres de la classe Démo dans un seul espace

echo &#39;one空间的类成员:&#39;,(new \one\Demo)->name,&#39;<br>&#39;;
//4. Dans le script qui déclare l'espace de noms, comment accéder aux méthodes prédéfinies du système

//Par exemple, un tableau à un seul caractère est déclaré

$welcome = &#39;php中文网欢迎您&#39;;
\print_r($welcome); echo &#39;<br>&#39;;
print($welcome); echo &#39;<hr>&#39;;
/ /Nous venons de dire que pour accéder aux membres globaux dans l'espace, vous devez ajouter, Pourquoi n'est-il pas ajouté ici

//Parce que si l'utilisateur ne l'ajoute pas, alors il cherchera d'abord le var_dump() ? fonction dans cet espace,

//Si non trouvé, alors allez dans la recherche globale de l'Espace, donc aucune erreur n'est signalée

//Mais si on crée aussi une fonction var_dump() dans le deux espaces actuels, seules les fonctions définies par l'utilisateur dans l'espace actuel seront exécutées

// var_dump(), la fonction système du même nom ne sera pas appelée

function print_r($arg)
{
    echo &#39;我是当前空间声明的函数调用:&#39;.$arg;
}
print_r($welcome); echo &#39;<br>&#39;;
/ /Syntaxe d'appel équivalente :

\two\print_r($welcome);
//Remarque : Ce print_r() est différent du print_r () intégré au système. Aucune relation, juste le même nom

// Tout comme, il y a une route du fleuve Yangtze à Shanghai, et nous avons également une route du fleuve Yangtze à Hefei. En dehors du même nom, ces deux routes n'ont aucun rapport

// Changjiang Road, district de Baoshan. , Shanghai

// Changjiang Road, Luyang District, Hefei City

// Je crois que personne ne penserait que c'est la même route ?

/ /En fait, la Les instructions d'appel complètes de ces deux fonctions devraient ressembler à ceci :

//1 Appeler le système :

\print_r($welcome);
//2 Appeler l'espace actuel :

.
\two\print_r($welcome);
//Bien que les noms soient les mêmes, les lieux de propriété sont différents

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