Newsgroup: it.comp.www.php
Titolo: cercare i punti in cui viene richiamata una funzione

Nella directory /home/web_master/htdocs ho vari progetti, tra cui quelli 
contenuti in questo file:
 
http://s000.tinyupload.com/index.php?file_id=59476362341674862489
 
(scaricare e decomprimere il file progetti.zip)
 
Come vedete si tratta di un'applicazione (MyApp) e di una libreria (MyLib).
La libreria è un package formato da un unica classe *Casa* che ha un 
metodo *apriPorta()*.
Mentre l'applicazione ha un unico file (run.php) che, come vedete, 
istanzia la classe, e richiama il metodo apriPorta().
 
Tutto ok!!!
Adesso però prestate attenzione.
 
Per determinati motivi, al metodo in questione voglio cambiarli nome: al 
posto di apriPorta, lo chiamo chiudiPorta.
 
Naturalmente adesso, dopo aver intervenuto sulla libreria, devo 
intervenire sull'app, cioè devo sostituire
 
$casa->apriPorta();
 
con
 
$casa->chiudiPorta();
 
altrimenti verrebbe generato il terribile errore: Calling unknown method...
 
Tutto logico!!!
Adesso però continuate a prestare attenzione.
 
Come già accennato, nella directory /home/web_master/htdocs, oltre a 
quelli che vi ho presentato, ho anche *tanti* altri progetti.
Molti di essi usano (richiamano) il metodo ...->apriPorta(), che 
naturalmente dovrei sostituire con ...->chiudiPorta().
 
La domanda quindi è:
 
Come faccio a trovare rapidamente (all'interno di tutti i miei progetti 
contenuti nella dir /home/web_master/htdocs) tutte le occorrenze 
(call-point) del metodo apriPorta, per andarli a sostituire con chiudiPorta?
 
Naturalmente la sostituzione voglio farla manualmente: (per carità, 
preferisco evitare i refactoring automatici...
Quindi mi interessa solo conoscere la location (nomefile:numeroriga) dei 
relativi call-point.
 
Esiste uno strumento apposito? Magari scritto in php (tipo PhpDoc)...

 Esiste uno strumento apposito? Magari scritto in php (tipo PhpDoc)...
 
grep -rn apriPorta *
 
Ciao!

 [...]
 
naturalmente il problema si pone anche quando si devono rinominare 
costanti (globali o di classe), classi, funzioni (funzioni globai), ecc.
Infatti se non si fanno subito gli opportuni aggiornamenti nei vari 
progetti, questi saranno inutilizzabili...
 

 
 
Come sopra, grep è un searcher grezzo che non sa certo
 interpretare il PHP, e tirerebbe fuori cose che non centrano
 niente
Almeno però non fa danni ?
 
 
----Android NewsGroup Reader----
http://usenet.sinaapp.com/
 

 danni ?
 
Non fa danni perché ti fa solo vedere dove sono le righe che cerchi. Io 
uso The Silver Searcher al posto di grep.
 
Poi ti serve un programma per le sostituzioni, sed, awk, un editor di 
testo decente o simili.
Per esigenze del genere da CLI io uso ex.
 
-- 
Andrea
 


 
Si ok, ma io cercavo una soluzione mirata; uno strumento che riesce a 
comprendere il php.
Hai presente phpstorm? Click destro sul nome della funzione -> find usages.
Così prima di rinominare la funzione, si conoscono tutti i call-point e 
relative conseguenze...
Naturalmente phpstorm agisce solo sul singolo progetto.
Cmq vabè, vanno bene anche gli strumenti che mi hai suggerito.
 

 Cmq vabè, vanno bene anche gli strumenti che mi hai suggerito.
 
Per quel che vale, io uso solo grep e mooolto raramente mi capita di fare
questo tipo di refactoring. Il trucco è facile, basta progettare prima di
iniziare a scrivere :)
 
Ciao!

 iniziare a scrivere:)
 
Cioè cercare di dare i nomi giusti fin dall'inizio, limitando al minimo 
i refectoring?
D'accordo, ma sai com'è, errori se ne fanno sempre...