Est-il possible en PHP d'instancier un objet à partir du nom d'une classe, si le nom de la classe est stocké dans une chaîne de caractères ?
Cool, j'aurais dû tester ça avant de demander hehe. Merci !
Est-il possible en PHP d'instancier un objet à partir du nom d'une classe, si le nom de la classe est stocké dans une chaîne de caractères ?
@user - trop juste. Je me demande pourquoi je suis venu directement à SO au lieu de faire le strict minimum ? lol
En fait, ce n'est pas si évident. Je sais qu'en Java il y a une chose appelée réflexion, mais ceci est très simple comparé à cela.
Vous pouvez effectuer des invocations dynamiques en stockant vos noms de classe et vos méthodes dans une base de données, par exemple. En supposant que la classe est résiliente pour les erreurs.
sample table my_table
classNameCol | methodNameCol | dynamic_sql
class1 | method1 | 'select * tablex where .... '
class1 | method2 | 'select * complex_query where .... '
class2 | method1 | empty use default implementation
etc. Ensuite, dans votre code, vous utilisez les chaînes renvoyées par la base de données pour les noms des classes et des méthodes. Vous pouvez même stocker des requêtes sql pour vos classes, le niveau d'automatisation dépend de votre imagination.
$myRecordSet = $wpdb->get_results('select * from my my_table')
if ($myRecordSet) {
foreach ($myRecordSet as $currentRecord) {
$obj = new $currentRecord->classNameCol;
$obj->sql_txt = $currentRecord->dynamic_sql;
$obj->{currentRecord->methodNameCol}();
}
}
J'utilise cette méthode pour créer des services web REST.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.