Obtenir le nom de la classe en PHP

Habdul Hazeez 30 janvier 2023
  1. Utiliser la résolution de nom de classe pour obtenir le nom de classe en PHP
  2. Utilisez la constante __CLASS__ pour obtenir le nom de la classe en PHP
  3. Utilisez la fonction get_class() pour obtenir le nom de la classe en PHP
  4. Utiliser la classe de réflexion pour obtenir le nom de la classe en PHP
  5. Utilisez ::class sur l’objet pour obtenir le nom de la classe en PHP
Obtenir le nom de la classe en PHP

Ce didacticiel explique comment obtenir un nom de classe PHP avec une résolution de nom de classe, la constante PHP __CLASS__ et la méthode get_class(). Vous apprendrez son utilisation pour la résolution du nom de classe dans et hors d’une classe.

Utiliser la résolution de nom de classe pour obtenir le nom de classe en PHP

Vous pouvez obtenir un nom de classe via la résolution de nom de classe lorsque vous avez un espace de noms dans votre code. Le résultat est un nom de classe complet (FQCN).

Cette fonctionnalité est disponible en PHP sous le nom ClassName::class. C’est utile lorsque vous avez un espace de noms dans votre PHP.

Dans l’exemple de code suivant, la résolution du nom de classe via ClassName::class renverra le nom de classe de la classe associée :

<?php
    namespace YourNameSpace;

    // Define a class
    class HelloClassName {}

    // Get the class name from ::class
    echo HelloClassName::class;
?>

Production :

YourNameSpace\HelloClassName

Si vous souhaitez utiliser cette fonctionnalité dans une méthode de classe, vous pouvez obtenir le nom de la classe via la méthode statique. Vous l’écrirez sous la forme static::class.

L’exemple de code suivant montre comment obtenir un nom de classe dans une méthode de classe.

<?php
    namespace YourNameSpace;

    // Define the class name
    class HelloClassName {
        /**
         * Define a function that returns
         * the class name via static::class
         */
        public function getClassName() {
            return static::class;
        }
    }

    // Create a new object
    $hello_class_name = new HelloClassName();

    // Get the class name
    echo $hello_class_name->getClassName();
?>

Production :

YourNameSpace\HelloClassName

Utilisez la constante __CLASS__ pour obtenir le nom de la classe en PHP

La constante __CLASS__ fait partie de la constante prédéfinie PHP. Vous pouvez l’utiliser dans une classe pour obtenir un nom de classe.

Le code suivant obtiendra le nom de la classe via la constante __CLASS__.

<?php
    // Define the class
    class Hello {
    	// This function will return the
    	// class name
        function HelloName (){
            return __CLASS__;
        }
    }

	// Create a new object
    $hello_object= new Hello();

	// Get the class name
    echo $hello_object->HelloName();
?>

Production :

Hello

Utilisez la fonction get_class() pour obtenir le nom de la classe en PHP

PHP fournit une fonction get_class(). Cette fonction renverra le nom de la classe. Vous pouvez l’utiliser dans la programmation procédurale et orientée objet. Tout d’abord, nous allons jeter un œil au style procédural.

Le bloc de code suivant définit une classe avec une seule fonction. La fonction au sein de la classe renverra le nom de la classe lorsque son argument est le mot-clé this.

Pour obtenir le nom de la classe, vous créez un objet à partir de la classe ; ensuite, vous passez le nom de l’objet à get_class().

<?php
    // Define a class
    class Hello {
        function class_name() {
            echo "The class name is: ", get_class($this);
        }
    }

    // Create a new object
    $new_hello_object = new Hello();

    // Get the class name
    $new_hello_object->class_name();

    // Also, you can get the class name
    // via an external call
    // echo get_class($new_hello_object);
?>

Production :

The class name is: Hello

Dans un premier temps, pour le style POO, vous pouvez retourner la fonction get_class() à partir d’une classe statique.

<?php
    // Define a class
    class Hello {
        public static function class_name() {
            return get_class();
        }
    }

    // Get the class name
    $class_name = Hello::class_name();

    echo $class_name;
?>	

Production :

Hello

Cette méthode a ses limites car lorsque vous étendez la classe, la classe étendue renverra le nom de la classe parente et non la classe étendue. Pour résoudre ce problème, vous pouvez utiliser get_called_class().

La fonction get_called class() repose sur Late Static Binding. Avec cette fonction, PHP renverra le nom de la classe appelante. Il résout la situation où la classe étendue renvoie le nom de sa classe parent plutôt que le sien.

<?php

// Define a class
class Hello {

	// A static function that returns the
	// name of the class that calls it
	public static function called_class_name() {
		return get_called_class();
	}

	// This function will return the
	// defining class name
	public static function get_defining_class() {
		return get_class();
	}
}

class ExtendHello extends Hello {

}

$hello_class_name = Hello::called_class_name();
$extended_class_name = ExtendHello::called_class_name();
$extend_hello_parent_class = ExtendHello::get_defining_class();

echo "Hello class name: " . $hello_class_name . "\n";
echo "Extended Hello class name: " . $extended_class_name . "\n";
echo "Extended Hello parent class name: "  . $extend_hello_parent_class . "\n";
?>

Production :

Hello class name: Hello
Extended Hello class name: ExtendHello
Extended Hello parent class name: Hello

Utiliser la classe de réflexion pour obtenir le nom de la classe en PHP

Reflection Class est un moyen concis d’obtenir un nom de classe en PHP. Vous créez une classe ; dans cette classe, créez une fonction qui renvoie une nouvelle classe Reflection.

La classe Reflection doit avoir son argument défini sur $this. Ensuite, vous pouvez obtenir le nom de la classe via la méthode getShortName() disponible avec la classe Reflection.

<?php
    // Define a class
    class Hello {
        // A function that returns the class
        // name via reflection
        public function HelloClassName() {
            return (new \ReflectionClass($this))->getShortName();
        }
    }

    // Create a new class name
    $hello_class_name = new Hello();

    // Get the class name
    echo $hello_class_name->HelloClassName();
?>

Production :

Hello

Utilisez ::class sur l’objet pour obtenir le nom de la classe en PHP

La fonctionnalité ::class fonctionnait sur les classes avant PHP 8. Depuis PHP, lorsque vous créez un objet à partir d’une classe, vous pouvez obtenir le nom de la classe à partir de l’objet créé avec ::class.

Vous trouverez un exemple dans le bloc de code suivant.

<?php
    namespace YourNameSpace;

    // define the class
    class HelloClassName {

    }

    // Create a new object
    $hello_class_name = new HelloClassName();

    // Get the class name from the object
    // via ::class
    echo $hello_class_name::class;
?>

Production :

YourNameSpace\HelloClassName
Habdul Hazeez avatar Habdul Hazeez avatar

Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.

LinkedIn

Article connexe - PHP Class