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 ?
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 {}
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(); }
Nous pouvons créer dynamiquement une instance en utilisant le code suivant :
$str = 'One'; $class = 'Class'.$str; $object = new $class();
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();
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();
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!