Comment lister les classes PHP avec leurs fonctions.

Signaler
Messages postés
23
Date d'inscription
mardi 25 décembre 2007
Statut
Membre
Dernière intervention
13 juin 2012
-
cac188
Messages postés
23
Date d'inscription
mardi 25 décembre 2007
Statut
Membre
Dernière intervention
13 juin 2012
-
Bonjour,

comme le nom du poste l'indique, je cherche un moyen de lister mes classes et leurs fonctions.

J'ai trouver cette fonction "get_declared_classes", qui me retourne toutes les classes existante sur ma page, mais je n'ai pas les fonctions.

Et j'ai celle-ci "get_defined_functions" qui nous retourne les fonctions définies. Mais elle ne donne pas les fonctions qui se trouvent dans les classes.

J'ai beau retourner la page dans tous les sens je n'arrive pas a m'en sortir...

4 réponses

Messages postés
197
Date d'inscription
mardi 20 janvier 2004
Statut
Membre
Dernière intervention
20 février 2013
1
Bonjour,

regarde du coté de get_class_methods (lien vers la doc)

ou regarde du coté de reflection (lien vers la doc)

Bonne journée
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
Bonjour,

Une lecture plus approfondie de la doc t'aurais donné cette information (et d'autre) :
get_defined_functions() retourne un array sous cette forme :
Array
(
    [internal] => Array
        (
            [0] => zend_version
            [1] => func_num_args
            [2] => func_get_arg
            [3] => func_get_args
            [4] => strlen
            [5] => strcmp
            [6] => strncmp
            ...
            [750] => bcscale
            [751] => bccomp
        )

    [user] => Array
        (
            [0] => myFunction
        )

)


Un moyen simple de récupérer toutes tes fonctions peut donc être celui ci :

// ALL USER FUNCTIONS
$arr = get_defined_functions();
foreach ($arr['user'] as $key => $value){
echo $value.'
';
} 


Maintenant si tu veut lié les méthodes aux classes il existe : get_class_methods($CLASS_NAME)

get_declared_classes() te retourne les classes déclarés dans un array avec les classes utilisateurs en fin de liste.
Donc il suffit de parcourir la liste à l'envers, si tu veut seulement les classes et méthodes que tu as toi même créer, tu préfixe tes noms de classe (XX_NOMCLASSE) et tu vérifie que le nom de classe du array vérifie le pattern.

Tu peut même pousser plus loin, par exemple en déclarant une Interface avec ses méthodes public, tes classes implémente cette interface et ces méthode et as en plus ses propres méthodes privées. tu utilise get_declared_interfaces() et sur le même principes avec get_class_methods($INTERFACE_NAME) tu récupère la liste des méthodes. La aussi pour ne pas obtenir les interfaces "basique" de php tu peut préfixé tes interfaces et filtrer les résultats

Avantage de cette deuxième solution : seul les méthodes de ton interface sont visible.

Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
12
Et si tu boucles sur tes classes recueillies et que tu fais un -->clic là !! <-- ?
S.
Messages postés
23
Date d'inscription
mardi 25 décembre 2007
Statut
Membre
Dernière intervention
13 juin 2012

Merci j'ai trouvé!