Maison >développement back-end >tutoriel php >Exemple d'analyse de PHP générant dynamiquement des objets basés sur des noms de classes de chaînes

Exemple d'analyse de PHP générant dynamiquement des objets basés sur des noms de classes de chaînes

黄舟
黄舟original
2017-08-15 14:36:194960parcourir

Dans notre dernière leçon Idées de développement et partage de code de chaînes sécurisées PHP, nous avons présenté le développement et l'utilisation de chaînes sécurisées PHP. Aujourd'hui, nous continuerons à vous le présenter. Concernant la génération dynamique d'objets à partir de chaînes PHP, une exigence courante est d'obtenir le nom d'une classe à partir d'autres endroits et de générer un objet de cette classe, puis la syntaxe utilisée auparavant ($obj = new $classname();) ne fonctionnera certainement pas ! Aujourd'hui, nous allons vous présenter comment y parvenir~


Téléchargez d'abord La bibliothèque de classes PHP que nous devons utiliser dans cette leçon est une bibliothèque de classes qui génère dynamiquement des objets basés sur des noms de classes de chaînes : http://www.php.cn/xiazai/leiku/606


Une fois le téléchargement terminé, recherchez le fichier de la bibliothèque de classes php, extrayez-le dans le répertoire local, puis créez un nouveau file~

Nous sommes dans le nouveau Appeler cette classe dans le fichier php et l'instancier :

<?php
include_once "stringtext.php"; //引入类库文件
$className = &#39;Test&#39;;          
$obj = call_user_func(array($className, &#39;create&#39;));

var_dump($obj);
?>

Utiliser directement cette syntaxe ne fonctionnera certainement pas :

$classname=&#39;Test&#39;;
$obj = new $classname();

Vous pouvez définir une méthode statique pour la classe cible qui génère une instance de l'objet, puis appelle la méthode via call_user_func ou call_user_func_array. Bien entendu, cela peut également être implémenté via des méthodes telles que les classes d’usine.

Le résultat en cours est donc le suivant :

Exemple danalyse de PHP générant dynamiquement des objets basés sur des noms de classes de chaînes

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