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
Linda Hamiltonoriginal
2024-12-08 15:06:11926parcourir

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

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,
];

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

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