107 votes

Comment trouver l'endroit où une fonction est définie ?

Comment puis-je savoir dans quel fichier et quelle ligne une fonction donnée a été définie ?

224voto

Tom Haigh Points 32314

Vous pouvez aussi le faire dans PHP lui-même :

$reflFunc = new ReflectionFunction('function_name');
print $reflFunc->getFileName() . ':' . $reflFunc->getStartLine();

12voto

Johnco Points 1389

Soit vous utilisez un IDE qui permet de le faire (je recommande Eclipse PDT), soit vous pouvez toujours le grep si vous êtes sous Linux, ou utiliser wingrep. Sous Linux, ce serait quelque chose comme :

grep -R "function funName" *

dans le dossier racine du projet.

3voto

Stephen Melrose Points 1901

Si vous utilisez un IDE comme Netbeans, vous pouvez CTRL+Cliquer sur la fonction utilisée et cela vous amènera à l'endroit où elle est définie, en supposant que le fichier se trouve dans le dossier du projet que vous avez défini.

Il n'y a pas de code ou de fonction pour le faire.

2voto

Anton Gogolev Points 59794

Je suppose que par "décrit" vous voulez dire "défini". Pour cela, vous avez idéalement besoin d'un IDE décent qui peut le faire.

2voto

Loz Cherone ツ Points 17975

Voici une fonction de base qui va scanner votre les fichiers entiers du projet pour une chaîne de caractères spécifique et vous dire dans quel fichier elle se trouve et à quelle position de caractères elle commence en utilisant seulement le php de base. J'espère que cela aidera quelqu'un...

<?php 
$find="somefunction()";

echo findString('./ProjectFolderOrPath/',$find);

function findString($path,$find){
    $return='';
    ob_start();
    if ($handle = opendir($path)) {
        while (false !== ($file = readdir($handle))) {
            if ($file != "." && $file != "..") {
                if(is_dir($path.'/'.$file)){
                    $sub=findString($path.'/'.$file,$find);
                    if(isset($sub)){
                        echo $sub.PHP_EOL;
                    }
                }else{
                    $ext=substr(strtolower($file),-3);
                    if($ext=='php'){
                        $filesource=file_get_contents($path.'/'.$file);
                        $pos = strpos($filesource, $find);
                        if ($pos === false) {
                            continue;
                        } else {
                            echo "The string '$find' was found in the file '$path/$file and exists at position $pos<br />";
                        }
                    }else{
                        continue;
                    }
                }
            }
        }
        closedir($handle);
    }
    $return = ob_get_contents();
    ob_end_clean();
    return $return;
}
?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X