Maison > Article > développement back-end > Déclaration et utilisation des espaces de noms en php
* 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;}
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='朱老师';} const SITE = 'www.php.cn'; 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, '<br>'; //默认输出的是当前空间的内容//Vérifier quel est l'espace de noms actuel ? constante : __NAMESPACE__
echo '当前命名空间是: ',__NAMESPACE__,'<br>';//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__.'\Demo'; echo (new $className)->name,'<br>';//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, '<hr>';//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 'one空间的类成员:',(new \one\Demo)->name,'<br>';//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 = 'php中文网欢迎您'; \print_r($welcome); echo '<br>'; print($welcome); echo '<hr>';/ /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 '我是当前空间声明的函数调用:'.$arg; } print_r($welcome); echo '<br>';/ /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!