Déclaration et utilisation des espaces de noms en php

无忌哥哥
Libérer: 2023-04-01 21:26:02
original
1767 Les gens l'ont consulté

* 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;}
Copier après la connexion


<. 🎜>//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;
Copier après la connexion
//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;}
Copier après la connexion
//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;; //默认输出的是当前空间的内容
Copier après la connexion
//Vérifier quel est l'espace de noms actuel ? constante : __NAMESPACE__

echo &#39;当前命名空间是: &#39;,__NAMESPACE__,&#39;<br>&#39;;
Copier après la connexion
//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;;
Copier après la connexion
//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;;
Copier après la connexion
//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;;
Copier après la connexion
//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;;
Copier après la connexion
/ /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;;
Copier après la connexion
/ /Syntaxe d'appel équivalente :

\two\print_r($welcome);
Copier après la connexion
Copier après la connexion
//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);
Copier après la connexion
//2 Appeler l'espace actuel :

.
\two\print_r($welcome);
Copier après la connexion
Copier après la connexion
//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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal