Maison > développement back-end > tutoriel php > Quels sont les avantages et l'utilisation de la notation « ::class » de PHP ?

Quels sont les avantages et l'utilisation de la notation « ::class » de PHP ?

Linda Hamilton
Libérer: 2024-12-08 15:06:11
original
980 Les gens l'ont consulté

What are the Benefits and Usage of PHP's `::class` Notation?

Comprendre la notation ::class de PHP

La notation ::class en PHP est une fonctionnalité puissante qui vous permet d'obtenir le nom complet d'une classe, y compris son espace de noms. Introduite dans PHP 5.5, cette notation offre des avantages significatifs en termes de lisibilité du code, de refactorisation et de liaison statique tardive.

Avantages de l'utilisation de ::class

Il existe plusieurs avantages à en utilisant la notation ::class :

  • Classe améliorée Référence : Vous n'avez plus besoin de stocker les noms de classe sous forme de chaînes. Les IDE peuvent désormais automatiquement extraire et utiliser ces noms de classe à des fins de refactoring.
  • Résolution de l'espace de noms : le mot-clé use peut être combiné avec ::class pour résoudre les classes sans avoir besoin de spécifier la classe complète. nom. Cela simplifie le code et améliore la lisibilité.
  • Late Static Binding : dans les classes parentes, vous pouvez utiliser static::class pour déterminer le nom de la classe dérivée, offrant ainsi plus de flexibilité dans l'héritage de classe.

Syntaxe et utilisation

La syntaxe de ::class est simple :

SomeClass::class
Copier après la connexion

Cette notation renverra le nom complet de SomeClass, y compris son préfixe d'espace de noms.

Exemples

Considérez l'exemple suivant :

protected $commands = [
    \App\Console\Commands\Inspire::class,
];
Copier après la connexion

L'utilisation de ::class élimine le besoin de noms de classe codés en dur, ce qui facilite la maintenir et mettre à jour le tableau de commandes.

Exemple de liaison statique tardive

L'exemple suivant illustre une liaison statique tardive à l'aide de la notation ::class :

class A {

    public function getClassName(){
        return __CLASS__;
    }

    public function getRealClassName() {
        return static::class;
    }
}

class B extends A {}

$a = new A;
$b = new B;

echo $a->getClassName();      // A
echo $a->getRealClassName();  // A
echo $b->getClassName();      // A
echo $b->getRealClassName();  // B
Copier après la connexion

Comme vous pouvez le voir, la méthode getRealClassName() dans la classe parent A utilise static::class pour obtenir le nom de la classe dérivée B, démontrant le avantages de la liaison statique tardive.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal