Maison >développement back-end >tutoriel php >Comment puis-je instancier dynamiquement des classes PHP à l'aide de chaînes ?

Comment puis-je instancier dynamiquement des classes PHP à l'aide de chaînes ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-04 04:23:09224parcourir

How Can I Instantiate PHP Classes Dynamically Using Strings?

Instanciation de classe dynamique avec des chaînes en PHP

En PHP, il est possible de créer une instance d'une classe en utilisant une chaîne représentant la classe nom. Cela élimine le besoin de longues instructions switch lorsqu'il s'agit de plusieurs classes.

Considérez l'exemple suivant :

class ClassOne {}
class ClassTwo {}

$str = 'One';

Plutôt que d'utiliser une instruction switch :

switch ($str) {
    case "One":
        $object = new ClassOne();
        break;
    case "Two":
        $object = new ClassTwo();
        break;
}

Vous pouvez créer dynamiquement une instance à l'aide d'une chaîne comme suit :

$class = 'Class' . $str;
$object = new $class();

Cette syntaxe construit le nom complet de la classe (par exemple, "ClassOne") et l'instancie. Si vos classes sont dans des espaces de noms, utilisez le nom complet :

$class = '\Foo\Bar\MyClass';
$instance = new $class();

PHP étend également cette fonctionnalité aux fonctions et méthodes de variables :

$func = 'my_function';
$func(...$parameters); // Calls my_function() with parameters

$method = 'doStuff';
$object = new MyClass();
$object->$method(); // Calls Myclass->doStuff()
(new MyClass())->$method(); // Calls Myclass->doStuff() in one line

Bien que vous puissiez créer des variables avec des chaînes , cela est considéré comme une mauvaise pratique et doit être évité au profit de l'utilisation de tableaux.

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