Lancer une classe d'après une variable

Mammouth du PHP | 1511 Messages

25 sept. 2006, 21:30

Bonsoir,
dans mes brainstormings d'après lycée, j'ai eu une folle idée pour mon projet.
Après moultes mals de tête, j'ai imaginé un système de modules assez bien plaisant et qui satisferait pas mal de monde et j'en suis venu a une question.
Est il possible de lancer une classe d'après un nom de variable, par exemple en faisant
$mynewclass = new $myclass;
?
Cela me parait un peu farfelu mais si quelqu'un avait un élement de réponse a m'avancer, car la seule structure que j'ai trouvée n'est pas très plaisante a mon gout.
Merci d'avance ;)
PS: a force de penser, va falloir que je prene des actions chez upsa...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 sept. 2006, 21:48

eval() :-k
après vérification des variables... pour que rien d'autre qui ne doit être exécuté ne l'est.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 1511 Messages

25 sept. 2006, 21:58

Merci Truc, je ne pensais pas qu'elle servait a ca cette fonction :P
@+

Mammouth du PHP | 1311 Messages

25 sept. 2006, 22:04

salut
si $myclass est une chaine
ceux-ci ne pose pas de problem
$mynewclass = new $myclass(); 

Mammouth du PHP | 1511 Messages

25 sept. 2006, 22:25

Donc si $myclass est égal a application, ca va me faire $mynewlcass = new application(); ?
@+

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 sept. 2006, 22:50

Le meilleur moyen de le savoir est de....................... tester :D

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 1511 Messages

26 sept. 2006, 07:26

Ce que je m'empresserais de faire ce midi a ma pause repas ou avant de partir au lycée :D
@+

Mammouth du PHP | 684 Messages

26 sept. 2006, 23:26

En PHP5 j'avais deja essayer de faire ce systeme.
Il marche, normallement tu peux remplacer le nom de la classe pas une variable.
Voici un tres vieux bout de code de test.
<?php
class Test
{
    public function TestOne()
    {
        echo 'Je suis TestOne<br />';
    }
}

class TestStatic
{
    public static function TestStaticTwo()
    {
        echo 'Je suis TestStaticTwo<br />';
    }
}

$oneclass = 'Test';
$onemethod = 'TestOne';

$object = new $oneclass();
$object->$onemethod();

$static = 'TestStatic';
$static_method = 'TestStaticTwo';

//$static::TestStaticTwo();//KO
//$static::$static_method();//KO
eval("\$static::TestStaticTwo();");//KO mais ne plante pas
?>
Je ne me rappel plus pourquoi j'avais oublier se systeme. Je crois que c'est a cause des static
qui ne marchent pas. Vue que j'utilise les static dans mon code.
Faudrais tester plus de cas pour voir toutes les limitations.
Zigz4g