2009-04-08 3 views
4

Ich stelle fest, dass PHP 5.3 vor ein paar Wochen Release Candidate Bühne erreicht (woo!), Aber dann die Liste der bereits veralteten Funktionen schließlich entfernt wurde, hat mich darüber nachdenken, ob es würde irgendeinen von meinem alten Code brechen.Migrieren auf eine neuere Version von PHP

Haben Sie keine Lust auf einen Test, den Sie einfach nur ausprobieren und testen können (auf einem Testserver installieren und ausprobieren)? Gibt es irgendwelche Migrationswerkzeuge, die Ihren Code analysieren können, um Probleme hervorzuheben? Zum Beispiel, wenn einige Skripte die ereg_* Funktionen verwenden.

+0

In welcher Version laufen Sie gerade? – cletus

+0

5.2.4, obwohl das nicht wichtig sein sollte? – nickf

+0

Nun, ich kann an Probleme denken, wenn Sie von 5.1 gehen -> 5.3, die nicht da sein wird, wenn Sie von 5.2 gehen -> 5.3. Von coruse Strom und neue Versionen sind beide relevant. – cletus

Antwort

1

Nichts geht über die Installation auf einem Testserver und die Ausführung von Komponententests. Sie haben Komponententests, oder? ;)

+0

Komponententests sind FTW, aber ich denke, er hat explizit gesagt, er will eine Heuristik, die keinen Testserver beinhaltet. :-) – Benson

+0

yeah sorry für die willkürliche caveat, aber ich fragte mich, ob es noch etwas anderes gab. Außerdem gibt es Software von Drittanbietern, für die ich keine Komponententests habe. – nickf

4

Eine Technik, die Sie verwenden könnten, ist die Liste der veralteten Funktionen, die entfernt werden, und grep für sie. Ein kleines Shell-Scripting fu reicht für solche Dinge sehr aus.

Nehmen wir an, Sie eine Datei deprecated.txt mit veralteten Funktionsnamen haben eine pro Zeile:

for func in `cat deprecated.txt` 
do 
    grep -R $func /path/to/src 
done 

Das wird Ihnen sagen, alle Instanzen der veralteten Funktionen Sie verwenden.

+1

Anstatt in einer Schleife zu re-grep, ist es wahrscheinlich effizienter, eine Aussage wie zu erstellen: egrep -R '(dep_func_1 | dep_func_2 | etc ...)'/Pfad/zu/src Eine andere Option wäre zu generieren eine xdebug-Trace-Datei, die die Namen der aufgerufenen Funktionen enthält - aber es wäre schwer, eine 100% ige Codeabdeckung zu erhalten –

+0

Natürlich wäre das effizienter, aber es ist ein bisschen schwieriger, eine leicht lesbare Shell zu schreiben Skript, das dep_func_1, dep_func_2 usw. aus einer Datei liest und den Grep ausführt. Ich habe es aus Gründen der Lesbarkeit gemacht, nicht aus Gründen der Geschwindigkeit. :-P – Benson