Maison > développement back-end > tutoriel php > Comment puis-je créer dynamiquement des instances de classe en PHP à l'aide d'une chaîne ?

Comment puis-je créer dynamiquement des instances de classe en PHP à l'aide d'une chaîne ?

Linda Hamilton
Libérer: 2024-11-27 05:57:11
original
531 Les gens l'ont consulté

How Can I Dynamically Create Class Instances in PHP Using a String?

Création dynamique d'instances en PHP à l'aide d'une chaîne

En PHP, il existe des situations dans lesquelles vous devrez peut-être créer une instance d'une classe en utilisant une chaîne, au lieu d'utiliser une longue instruction switch pour choisir entre plusieurs classes. Par exemple, disons que nous avons les deux classes suivantes :

class ClassOne {}
class ClassTwo {}
Copier après la connexion

Et nous recevons une chaîne qui peut être "Un" ou "Deux". Plutôt que d'utiliser une instruction switch comme :

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

Nous pouvons créer dynamiquement une instance en utilisant le code suivant :

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

La variable $class est construite dynamiquement en concaténant la chaîne 'Class ' avec la valeur $str. Ensuite, nous utilisons l'opérateur new pour créer une instance de cette classe. Cette technique nous permet de créer dynamiquement des instances de classes basées sur une entrée de chaîne.

La même approche peut être utilisée avec les espaces de noms en fournissant le nom de classe complet :

$class = '\Foo\Bar\MyClass';
$instance = new $class();
Copier après la connexion

De plus, PHP prend en charge l'appel dynamique de fonctions et de méthodes de variables en utilisant la syntaxe suivante :

$func = 'my_function';
$parameters = ['param2', 'param2'];
$func(...$parameters); // calls my_function() with 2 parameters;

$method = 'doStuff';
$object = new MyClass();
$object->$method(); // calls the MyClass->doStuff() method.
// or in one call
(new MyClass())->$method();
Copier après la connexion

Cependant, il est important de noter que la création dynamique de variables est généralement une mauvaise pratique et devrait être évité autant que possible. Les tableaux sont une meilleure alternative dans la plupart des cas.

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