Maison > développement back-end > tutoriel php > Quelle est la syntaxe PHP `::class` et comment améliore-t-elle le code ?

Quelle est la syntaxe PHP `::class` et comment améliore-t-elle le code ?

Patricia Arquette
Libérer: 2024-11-25 19:38:19
original
674 Les gens l'ont consulté

What is the PHP `::class` Syntax and How Does it Improve Code?

Comprendre ::class en PHP

La syntaxe ::class en PHP fait référence à un ajout relativement récent introduit dans la version 5.5. Il sert de notation abrégée pour représenter le nom complet d'une classe, y compris son espace de noms.

Fonctionnalités et avantages

SomeClass::class renverra la représentation sous forme de chaîne. du nom complet de SomeClass. Cette fonctionnalité offre plusieurs avantages :

  • Refactoring du code amélioré : En utilisant ::class, vous pouvez éliminer le besoin de coder en dur les noms de classe sous forme de chaînes. Cela permet aux IDE d'identifier et de mettre à jour facilement les noms de classe lors de la refactorisation du code.
  • Compatibilité des mots-clés d'utilisation : Le mot-clé use peut être combiné avec ::class pour simplifier la résolution de classe, réduisant ainsi le besoin de taper le nom complet de la classe. Par exemple :
use \App\Console\Commands\Inspire;

//...

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

Avantage supplémentaire : liaison statique tardive

En plus des avantages susmentionnés, ::class est également utile pour la mise en œuvre de la liaison statique tardive. Liaison, où le nom de la classe dérivée peut être obtenu dans la classe parent. Ceci est réalisé en utilisant static::class au lieu de la constante magique CLASS, comme le montre l'exemple suivant :

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

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!

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