Comment instancier dynamiquement une classe PHP à partir d'une variable ?

Mary-Kate Olsen
Libérer: 2024-11-23 11:13:04
original
283 Les gens l'ont consulté

How to Dynamically Instantiate a PHP Class from a Variable?

Instancier dynamiquement une classe PHP à partir d'une variable

En PHP, il est possible d'instancier dynamiquement une classe à l'aide d'une variable chaîne contenant la classe nom. Ceci peut être réalisé en attribuant d'abord le nom de la classe à une nouvelle variable, puis en utilisant l'opérateur signe dollar ($) pour instancier la classe.

Exemple :

$var = 'bar';
$classname = $var . 'Class';
$bar = new $classname('argument for constructor');
Copier après la connexion

Cela créera une nouvelle instance de la classe barClass, en passant l'argument 'argument pour le constructeur' à son constructeur.

Utilisation d'un modèle Factory :

Cette technique est souvent utilisée dans le contexte du modèle Factory, où une classe d'usine est chargée de créer et de renvoyer des instances de différentes classes en fonction d'un paramètre donné. Par exemple :

class ClassFactory {
    public static function create($className, $args = []) {
        $instance = new $className(...$args);
        return $instance;
    }
}
Copier après la connexion

Cette classe d'usine peut être utilisée comme suit :

$instance = ClassFactory::create('barClass', ['argument for constructor']);
Copier après la connexion

Remarques supplémentaires :

Lors de l'utilisation de cette technique, il est important de s'assurer que la variable contenant le nom de la classe est correctement nettoyée pour empêcher l'instanciation arbitraire de la classe. Ceci peut être réalisé en utilisant des fonctions comme preg_replace() pour valider le nom de la classe.

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