Come posso sapere in quale file e riga è stata definita una determinata funzione?Come scoprire dove viene definita una funzione?
risposta
Si potrebbe anche fare questo in PHP stesso:
$reflFunc = new ReflectionFunction('function_name');
print $reflFunc->getFileName() . ':' . $reflFunc->getStartLine();
Suppongo che per "descritto" intendi "definito". Per questo, hai idealmente bisogno di un IDE decente in grado di farlo.
Sto usando Aptana che ha la ricerca del testo attraverso il progetto. Ma per usarlo ho bisogno di importare il foro (molto grande) come progetto. – SaltLake
Se si utilizza un IDE come Netbeans, è possibile CTRL + fare clic sulla funzione utilizzata e vi porterà dove è definito, supponendo che il file si trovi nella cartella del progetto definita.
Non c'è alcun codice o funzione per fare questo però.
O utilizzare un IDE che consenta di farlo (vorrei raccomandare Eclipse PDT), oppure è sempre possibile eseguire il comando grep se su Linux o utilizzando wingrep. In Linux sarebbe qualcosa di simile:
grep -R "function funName" *
dall'interno della cartella principale del progetto.
meglio avere: grep -R "function \ sfunName" * – David
Avrete bisogno di un IDE che supporti la funzionalità "Open Function Declaration". Una buona idea per php è Eclipse PDT.
Per cercare la definizione della funzione, evidenziare il nome della funzione, tenere premuto CTRL + Fare clic sul nome.
Heres una funzione di base che esplorerà i vostri file intero progetto per una stringa specifica e ti dirà quale file è dentro e quale posizione si char inizia a utilizzare solo php di base. Spero che questo aiuti qualcuno ...
<?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;
}
?>
usa 'grep' invece! –
Mi piace la soluzione di Tom, così ho pensato che avrei potuto condividere un po 'più trucchi con ReflectionFunction (dovrebbe funzionare su tutti i PHP 5):
uno -liner per stampare il nome del file:
print (new ReflectionFunction("foo"))->getFileName();
si prega di notare che non vi mostrerà la posizione fo r internal funzioni (ad esempio _), ma è comunque possibile stampare l'API per esso come di seguito.
per stampare la definizione ei parametri della funzione:
print new ReflectionFunction("foo");
Esempio:
$ php -r 'print new ReflectionFunction("_");' Function [ <internal:gettext> function _ ] { - Parameters [1] { Parameter #0 [ <required> $msgid ] } }
altro modo per controllare dove viene la funzione definita, provare a ridefinire la funzione, sistema di errore di PHP restituirà semplicemente un errore ti ha detto dove la funzione precedentemente definita
- 1. Come scoprire da dove viene il mio errore?
- 2. Can Emacs può mostrarmi dove viene chiamata una funzione specifica?
- 3. In R, come scoprire quale metodo viene inviato per una particolare chiamata di funzione?
- 4. Derivate numeriche di una funzione definita arbitrariamente
- 5. Come fare gdb eseguire una funzione definita dall'utente (definita in .gdbinit) ogni volta che si avvia?
- 6. Come scoprire quale risorsa drawble viene utilizzata?
- 7. funzione non definita sha256()
- 8. Funzione non definita javascript
- 9. Funzione jQuery non definita
- 10. funzione non definita mysql_connect()
- 11. Chiamare una funzione definita all'interno di un'altra funzione in Javascript
- 12. Come posso impostare una funzione definita dall'utente in Volt (Phalcon)
- 13. TSQL Come si stampa PRINT in una funzione definita dall'utente?
- 14. Come posso rendere una funzione definita in jQuery.ready disponibile globalmente?
- 15. Come scoprire dove sta andando la mia memoria
- 16. una funzione actionscript può scoprire il proprio nome?
- 17. Django: Da dove viene "DoesNotExist"?
- 18. Scoprire dove è stato reindirizzato il ricciolo
- 19. Come scoprire dove sta scrivendo tutta l'applicazione closed source?
- 20. chiamata una funzione anonima definita in un setInterval
- 21. Chiamata di una funzione definita dall'utente in jQuery
- 22. Dove è definita la macro DEBUG?
- 23. funzione non definita eval() - PHP
- 24. Come viene definita la variabile __name__ in un modulo Python?
- 25. Etichette dell'asse Matplotlib: come scoprire dove si troveranno?
- 26. Come trovare il file .js dove viene dichiarata una determinata funzione js (da Chrome)?
- 27. pycharm trova dove viene chiamata la funzione Python
- 28. Come posso scoprire dove un BufferedImage ha Alpha in Java?
- 29. Come scoprire dove si trova la directory di Python include?
- 30. Come scoprire dove si verifica l'errore nello script Inno Setup?
+1 per risolvere questo con PHP invece dell'IDE. Bella idea – Gordon
Suggerimento: '$ reflFunc-> isInternal() === TRUE' significa -> getFileName() e -> getStartLine() restituirà FALSE. –
questo non ha funzionato per me – Ash