Obtenir le nom de la classe en PHP
- Utiliser la résolution de nom de classe pour obtenir le nom de classe en PHP
-
Utilisez la constante
__CLASS__
pour obtenir le nom de la classe en PHP -
Utilisez la fonction
get_class()
pour obtenir le nom de la classe en PHP - Utiliser la classe de réflexion pour obtenir le nom de la classe en PHP
-
Utilisez
::class
sur l’objet pour 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 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