"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je instancier une classe à partir d’une variable en PHP ?

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

Publié le 2024-11-18
Parcourir:282

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 découpler 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 de langage dynamiques et les espaces de noms, reportez-vous aux ressources suivantes :

  • [Espaces de noms](https://www.php.net/manual/en/langue.namespaces.php)
  • [Langage dynamique Fonctionnalités](https://www.php.net/manual/en/langue.types.dynamic.php)
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3