Maison  >  Article  >  développement back-end  >  Comment puis-je instancier une classe à partir d’une variable en PHP ?

Comment puis-je instancier une classe à partir d’une variable en PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-17 16:17:01433parcourir

How Can I Instantiate a Class from a Variable in PHP?

Implémentation de l'instanciation de classe à partir d'une variable en PHP

En PHP, vous pouvez rencontrer un scénario dans lequel vous devez instancier une classe à partir de la valeur d'une variable. Illustrons cela avec un exemple :

$var = 'bar';
$bar = new {$var}Class('var for __construct()'); //$bar = new barClass('var for __construct()');

Cette méthode tente de créer une instance de la classe spécifiée par la variable $var. Cependant, PHP ne prend pas en charge cette syntaxe de manière native.

Approche alternative sans eval()

Pour y parvenir sans utiliser eval(), vous pouvez utiliser une variable pour contenir le nom de la classe :

$classname = $var . 'Class'; // e.g. $classname = 'barClass'

$bar = new $classname('var for __construct()');

Factory Pattern

Cette technique est souvent utilisée dans le modèle Factory, qui est utilisé pour centraliser la création de classe et la dissocier du processus de création. Dans de tels scénarios, une classe d'usine créerait dynamiquement les instances de classe souhaitées en fonction de la configuration ou d'autres paramètres.

Ressources supplémentaires

Pour plus d'informations sur les fonctionnalités du langage dynamique et les espaces de noms, reportez-vous aux ressources suivantes :

  • [Espaces de noms](https://www.php.net/manual/en/lingual.namespaces.php)
  • [Fonctionnalités de langage dynamique](https://www .php.net/manual/en/langue.types.dynamic.php)

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