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
Libérer: 2024-12-04 04:23:09
original
173 Les gens l'ont consulté

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';
Copier après la connexion

Plutôt que d'utiliser une instruction switch :

switch ($str) {
    case "One":
        $object = new ClassOne();
        break;
    case "Two":
        $object = new ClassTwo();
        break;
}
Copier après la connexion

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

$class = 'Class' . $str;
$object = new $class();
Copier après la connexion

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();
Copier après la connexion

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
Copier après la connexion

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!

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