Reflection

Résolu
cs_dorian91 Messages postés 41 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 15 mars 2009 - 24 juil. 2007 à 11:00
cs_dorian91 Messages postés 41 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 15 mars 2009 - 24 juil. 2007 à 12:31
Salut a tous
Voila j'essaye de m'initier a la reflection en php (dur dur ).
J'ai fait un petit script et il me met toujours un warning

voici mon code

$class = new ReflectionClass('Test');
$class->getMethod('monTest')->invoke(); // Warning: Invoke() expects at least one parameter, none given in ...

----------------------------------------------------------

class Test
{
    public function monTest()
    {
        print 'tres bon test';
    }
}

J'ai ecume la doc php et j'ai rien trouve
merci d'avance

3 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 juil. 2007 à 11:38
Ennfin...le plus logique qui revient au 1er exemple :

<?php
$class = new ReflectionClass('Test');
$class->getMethod('monTest')->invoke($class -> newInstance()); // Warning: Invoke() expects at least one parameter, none given in ...

class Test
{
    public function monTest()
    {
        print 'tres bon test';
    }
}
?>
En complexifiant en fonction des arguments à passer au constructeur de la classe sur laquelle tu fais ton reverse engineering.
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 juil. 2007 à 11:36
Hello,

<?php
$class = new ReflectionClass('Test');
$a = new Test;
$class->getMethod('monTest')->invoke($a); // Warning: Invoke() expects at least one parameter, none given in ...

class Test
{
    public function monTest()
    {
        print 'tres bon test';
    }
}
?>

Ou bien

<?php
$class = new ReflectionClass('Test');
$class->getMethod('monTest')->invoke(null); // Warning: Invoke() expects at least one parameter, none given in ...

class Test
{
    public static function monTest()
    {
        print 'tres bon test';
    }
}
?>

Ce sont les deux seules possibilités.
0
cs_dorian91 Messages postés 41 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 15 mars 2009
24 juil. 2007 à 12:31
Ok merci malalam la 2eme reponse regle le probleme
C'est en voyant tes classes et celle de fhx que je me suis dis qu'il fallait me mettre a la reflection
Apres j'attaque les iterateurs ca ca va etre plus dur
En tout cas merci pour la rapidite de ta reponse
0
Rejoignez-nous