JeuWeb - Crée ton jeu par navigateur
nom de classe dynamique - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : nom de classe dynamique (/showthread.php?tid=777)



nom de classe dynamique - gtsoul - 10-02-2007

Bonjour,
je voudrais créer une instance d'une classe dont je ne connais pas le nom à l'avance.

ex : si c'est toto:
$objet = new Toto();

J'ai essayé 2-3 trucs avec func_name(), mais ca ne marche que pour les méthodes.
J'ai trouvé
eval('$objet = new '.$nom_classe.'();');
mais c'est moyen


RE: nom de classe dynamique - joshua - 10-02-2007

tu ne peux pas tout simplement faire entrer un parametre externe en parametre de ta classe et du coup tu as une seule classe generique dont le nom que tu voulais est un de ses parametres (je sais pas si je suis clair)
En gros:
on veut un objet toto
$toto=new objet("toto")

et dans ta classe tu as dans le constructeur:
function __construct ($param)
{
$this->nom=$param
...
}


RE: nom de classe dynamique - denisc - 10-02-2007

De toute façon, il n'y a que ces deux solutions!
-> Eval
-> Classe "foure tout"

Ou alors une troisième, mais pas top... Des fichiers xxx.inc que tu inclue en fonction de ce que tu as besoin...

ex:
fichier toto.inc qui crée l'objet de type toto
<?php $objet = new toto(); ?>

fichier titi.inc qui crée l'objet de type titi
<?php $objet = new titi(); ?>

et dans ton code, tu as :
<?php
$nom_classe = 'toto'; // ou 'titi'
include ($nom_classe.'.inc');
$objet->ma_methode();
?>


RE: nom de classe dynamique - pascal - 11-02-2007

peut être une piste: les fonctions variables:
http://fr.php.net/manual/fr/functions.variable-functions.php

A+

Pascal