Table des matières
Définition de l'espace de noms
Trois façons de référencer les identifiants d'espace de noms
import, alias
Maison développement back-end tutoriel php Quelques réflexions sur les espaces de noms, une fonctionnalité clé de PHP ! ! !

Quelques réflexions sur les espaces de noms, une fonctionnalité clé de PHP ! ! !

May 28, 2021 am 11:27 AM
composer php psr-4

Saviez-vous que les espaces de noms sont principalement utilisés pour résoudre le problème des éventuels conflits entre classes et fonctions dans le code ? Cette fonctionnalité est disponible dans d'autres langages depuis longtemps, mais PHP a tardé à arriver. Son émergence a donné naissance à PSR-4, qui a également donné naissance à Composer, c'est donc une fonctionnalité très importante.

Quelques réflexions sur les espaces de noms, une fonctionnalité clé de PHP ! ! !

Définition de l'espace de noms

Un espace de noms est un conteneur, qui est principalement utilisé pour identifier les classes et les fonctions qu'il contient. Une fois qu'un espace de noms est défini, le code en dessous appartient à cet espace de noms, la définition de l'espace de noms doit donc être au tout début du code.

Pour le même package, le code dans le même espace de noms ou sous-espace de noms n'a pas besoin d'être défini dans un fichier PHP. Le code dans le sous-espace de noms sert à terminer le travail d'un module spécifique. combiné, il devient un espace de noms complet du package.

Si le code que vous écrivez ne définit pas d'espace de noms, cela signifie qu'il appartient à l'espace de noms global (symbole), vous pouvez donc directement référencer des classes ou des fonctions (sans ajouter le symbole).

Trois façons de référencer les identifiants d'espace de noms

(1) Le nom complet

est similaire à un chemin absolu sur le système d'exploitation, et il est le chemin complet, il n'y aura donc aucun malentendu lors de sa compréhension.
Par exemple, dans le nouvel ABC, alors C sera résolu en classe C sous l'espace de noms AB.

(2) Le nom qualifié

est similaire à un chemin relatif sur le système d'exploitation, il contient une partie du nom et est référencé à l'espace de noms actuel.
Par exemple, si BC() est appelé sous l'espace de noms A, l'espace de noms finalement référencé est ABC().

(3) Le nom non qualifié

est similaire au nom qualifié, mais n'inclut pas les sous-espaces de noms.
Par exemple, si C() est appelé sous l'espace de noms AB, l'espace de noms finalement référencé est ABC().

Illustrez les trois méthodes de référence à travers un exemple :

namespace \Example;
require_once "fnction.php";
class ClassA {}
function Function() {}

//完全限定名称
\Example\Function();
\Example\B\Function(); 

//限定名称
B\Function(); //指向 \Example\B\Function();

//非限定名称
$test = new ClassA(); //resolves to \Example\ClassA
Function(); //指向 \Example\Function
Copier après la connexion

Remarque :

  • À l'intérieur d'un espace de noms, s'il n'est pas trouvé dans le portée actuelle Pour la définition des fonctions et des constantes, PHP ne signalera pas d'erreurs. Recherchez-le plutôt dans l’espace de noms global.
  • Dans un espace de noms, si aucune définition de classe n'est trouvée dans la portée actuelle, PHP signalera directement une erreur et n'ira pas dans la portée globale pour trouver la classe correspondante, donc si vous avez besoin de référencer une classe interne ou classe définie par l'utilisateur, le nom complet doit être utilisé.

Pour donner un exemple simple, écrivez d'abord un morceau de code (défini dans l'espace de noms) et nommez-le function.php :

namespace Foo\Bar\subnamespace;
const FOO = 1;
function foo() 
{
    return "foo\r\n";
}
class foo 
{
    static function staticmethod()
    {
        return __METHOD__ . "\r\n" ;
    }

    function foofunction()
    {
        return __METHOD__ . "\r\n" ;
    }
}
Copier après la connexion

Ensuite, écrivez un morceau de code test.php , aussi Code sous l'espace de noms :

namespace secondsp;
include 'function.php';

class foo
{
    function foofunction()
    {
        return __METHOD__ . "\r\n" ;
    }
}

function is_file($file)
{
    return true ;
}
 
//非限定名称:实例化secondsp\foo类对象
$obj = new foo;  
echo $obj->foofunction();

//实例化Foo\Bar\subnamespace\foo 类对象
$obj = new Foo\Bar\subnamespace\foo ;
echo $obj->foofunction();

//代码会报错,在命名空间内部,假如无法找到当前命名空间下的类,则会报错
//$obj = new ArrayObject(array(1)); 
$obj = new \ArrayObject(array(1)); 

//在命名空间内部,假如无法找到当前命名空间下的函数或者常量,则会寻找 native function
echo  strlen("nihao");

 //引用当前命名空间下的函数
var_dump(is_file('nihao')); //True
//引用全局函数
var_dump(\is_file('nihao')); //False
Copier après la connexion

import, alias

Si la hiérarchie des espaces de noms à utiliser est longue et nombreuse, elle sera particulièrement gênante à utiliser , vous pouvez donc utiliser le mot-clé use pour importer des espaces de noms, des classes, des constantes, des fonctions, etc., puis les utiliser pour référencer directement le nom complet. Le mot-clé alias peut renommer les classes et fonctions importées.

Par exemple, comment utiliser le mot-clé use, le code est sous l'espace de noms global :

include 'function.php';

use Foo\Bar\subnamespace\foo ;
$obj = new foo;
echo $obj->foofunction();

use Foo\Bar\subnamespace\foo  as aliasfunname;
$obj = new aliasfunname;
echo $obj->foofunction();
 
use Foo\Bar\subnamespace ; 
$obj = new subnamespace\foo ;
echo $obj->foofunction();

use Foo\Bar\subnamespace  as aliasname;
$obj = new aliasname\foo ;
echo $obj->foofunction();

//由于调用代码并不在命名空间内,所以对于全局的类,无需引入使用
$obj = new ArrayObject(array(1)); 

//导入一个函数
use function Foo\Bar\subnamespace\foo   ;
echo foo();
 
use function Foo\Bar\subnamespace\foo  as func;
echo func();
 
use const  Foo\Bar\subnamespace\FOO;
//echo FOO;
Copier après la connexion

Résumé :

  • et Python Différemment, l'espace de noms en PHP est un concept sémantique et n'a rien à voir avec l'emplacement et la disposition du code spécifique. En d'autres termes, le code qui utilise l'espace de noms doit importer lui-même les fichiers de la bibliothèque (tous les fichiers). comment les fichiers de la bibliothèque sont organisés Cela n'a pas d'importance ; en Python, s'il y a un fichier __init__.py dans un module ou un package, l'analyseur Python importera automatiquement les fichiers du package ou tous les modules.
  • Le concept de portée en PHP est très faible, et le domaine global et le domaine local sont clairement distingués. Par exemple, les variables de l'espace global ne peuvent pas être référencées dans des fonctions ou des classes. La situation est différente dans les espaces de noms. Si le code qui définit l'espace de noms ne trouve pas les constantes et les fonctions dans l'espace de noms correspondant, il utilisera les constantes et les fonctions globales et s'il ne trouve pas la classe dans l'espace de noms correspondant (y compris sa propre classe Define ; ), le code signalera directement une erreur.
  • Si vous utilisez l'espace de noms via le mot-clé use, vous n'avez pas besoin de l'importer via le nom complet (symbole), car PHP suppose déjà que l'espace de noms importé est un espace de noms pleinement qualifié.
  • Les constantes, fonctions, classes, interfaces et autres espaces de noms peuvent être importés via le mot-clé use.
  • L'espace de noms est une fonctionnalité du langage Afin de poursuivre une utilisation plus efficace, il devrait y avoir une spécification d'utilisation et un mécanisme de chargement automatique. Il s'agit de la spécification PSR-4.

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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Guide rapide CakePHP Guide rapide CakePHP Sep 10, 2024 pm 05:27 PM

CakePHP est un framework MVC open source. Cela facilite grandement le développement, le déploiement et la maintenance des applications. CakePHP dispose d'un certain nombre de bibliothèques pour réduire la surcharge des tâches les plus courantes.

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

See all articles