J'ai besoin d'obtenir la liste des fonctions avec leur contenu (pas seulement le nom de la fonction) du fichier php. J'ai essayé d'utiliser regex mais il y a beaucoup de limitations. il n'analyse pas tous les types de fonctions. par exemple, il échoue si la fonction a des if et for loop instructions.Comment faire pour obtenir la liste des fonctions déclarées avec leurs données du fichier php?
en détails: J'ai environ 100 fichiers inclus. chaque fichier a le nombre de fonctions déclarées. certains fichiers ont des fonctions dupliquées dans d'autres fichiers. donc ce que je veux est d'obtenir la liste de toutes les fonctions du fichier spécifique puis mettre cette liste à l'intérieur d'un tableau, puis je vais utiliser array unique afin de supprimer les doublons. J'ai lu à propos de tokenizer mais je n'ai vraiment aucune idée de comment le faire saisir la fonction déclarée avec ses données. tout ce que j'ai est ceci:
function get_defined_functions_in_file($file)
{
$source = file_get_contents($file);
$tokens = token_get_all($source);
$functions = array();
$nextStringIsFunc = false;
$inClass = false;
$bracesCount = 0;
foreach($tokens as $token) {
switch($token[0]) {
case T_CLASS:
$inClass = true;
break;
case T_FUNCTION:
if(!$inClass) $nextStringIsFunc = true;
break;
case T_STRING:
if($nextStringIsFunc) {
$nextStringIsFunc = false;
$functions[] = $token[1];
}
break;
// Anonymous functions
case '(':
case ';':
$nextStringIsFunc = false;
break;
// Exclude Classes
case '{':
if($inClass) $bracesCount++;
break;
case '}':
if($inClass) {
$bracesCount--;
if($bracesCount === 0) $inClass = false;
}
break;
}
}
return $functions;
}
malheureusement, cette fonction répertorie uniquement les noms de fonction .. est ce que je dois à la liste toute fonction déclarée avec sa structure .. donc des idées?
merci d'avance ..
Voulez-vous que le corps de la fonction, par exemple quand vous trouvez 'function foo() {return 'foo';}' vous voulez qu'il retourne 'return 'foo;''. Veuillez donner un exemple des résultats attendus. Et fournissez également plus de détails sur les raisons pour lesquelles vous en auriez besoin en premier lieu. – Gordon
Je travaille sur un script appelé "includer". ceci utilisé pour analyser les fichiers php contient des instructions "include". nous lisons donc le chemin des inclusions et obtenons les données en utilisant file_get_contents. et les remettre dans le fichier principal. J'ai environ 100 fichiers inclus. chacun de ces fichiers a des fonctions. certaines de ces fonctions ont été re-déclarées dans d'autres fichiers. donc ce que je veux c'est obtenir la liste de toutes les fonctions de tous ces fichiers contient ces fonctions puis j'ai besoin de les mettre dans le tableau et finalement utiliser array_unique pour supprimer les doublons. si vous avez une meilleure solution s'il vous plaît éclairer moi .. merci, – ermac2014