Domanda

Esistono strumenti magici che posso utilizzare per scansionare il codice sorgente scritto per PHP4 per evidenziare le funzioni deprecate in PHP5? Attualmente sto eseguendo l'ultima versione di PHP su un server e devo portare questo codice. C'è qualcosa là fuori che può darmi una mano?

È stato utile?

Soluzione

PHP 5.3 lancerà un E_DEPRECATED ATTENZIONE Se si imposta i livelli di reporting degli errori per mostrarli.

Altri suggerimenti

Volevo fare qualcosa del genere da solo. Usando questo elenco di Caratteristiche deprecate in PHP 5.3.x, Ho fatto un regex per cercare qualsiasi uso di queste funzioni:

(?i:(call_user_method\(|call_user_method_array\(|define_syslog_variables\(|dl\(|ereg\(|ereg_replace\(|eregi\(|eregi_replace\(|set_magic_quotes_runtime\(|session_register\(|session_unregister\(|session_is_registered\(|set_socket_blocking\(|split\(|spliti\(|sql_regcase\(|mysql_db_query\(|mysql_escape_string\())

(Caso insensibile, con ogni nome di funzione che include la parentesi di apertura solo per evitare falsi positivi; "DL" emetterebbe molto rumore altrimenti.)

Se sei su un sistema con find e grep, potresti quindi eseguire qualcosa di simile:

find <directory to search> -type f -name '*.php' -exec grep -R -P -H "<above regex>" {} \;

Solo per fare un esempio più concreto, ho appena usato quanto segue:

find htdocs -type f -name '*.php' -exec grep -R -P -H "(?i:(call_user_method\(|call_user_method_array\(|define_syslog_variables\(|dl\(|ereg\(|ereg_replace\(|eregi\(|eregi_replace\(|set_magic_quotes_runtime\(|session_register\(|session_unregister\(|session_is_registered\(|set_socket_blocking\(|split\(|spliti\(|sql_regcase\(|mysql_db_query\(|mysql_escape_string\())" {} \;

Sembra che ora ho bisogno di sostituire alcuni casi di session_register e session_unregister me stesso!

Lo stesso tipo di cose potrebbe essere fatto per direttive e parametri INI deprecati.

Il Appendici del manuale Contiene alcune informazioni sulla migrazione ma non credo che contenga quello che stai cercando.

Un modo (che potrebbe essere inaccurato ma potrebbe essere usato) a cui ho pensato era la notizia.txt incluso in ogni download PHP. Io sono scrivere una sceneggiatura ATM che analizza questo file e controllando le funzioni deprecate potrebbe essere qualcosa che potrei aggiungere. Sto lavorando a un altro ATM del progetto ma vorrei aggiungere funzionalità per questo nella versione ricostruita più ampia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top