Comment lister les classes PHP avec leurs fonctions.

Messages postés
23
Date d'inscription
mardi 25 décembre 2007
Statut
Membre
Dernière intervention
13 juin 2012
- - Dernière réponse : cac188
Messages postés
23
Date d'inscription
mardi 25 décembre 2007
Statut
Membre
Dernière intervention
13 juin 2012
- 13 juin 2012 à 12:11
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...
Afficher la suite 

4 réponses

Messages postés
197
Date d'inscription
mardi 20 janvier 2004
Statut
Membre
Dernière intervention
20 février 2013
1
0
Merci
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
Commenter la réponse de cs_47
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
0
Merci
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.
Commenter la réponse de Lyle56
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
11
0
Merci
Et si tu boucles sur tes classes recueillies et que tu fais un -->clic là !! <-- ?
S.
Commenter la réponse de syndrael
Messages postés
23
Date d'inscription
mardi 25 décembre 2007
Statut
Membre
Dernière intervention
13 juin 2012
0
Merci
Merci j'ai trouvé!
Commenter la réponse de cac188