2009-04-08 12 views
4

Je remarque qu'il y a quelques semaines PHP 5.3 a atteint la phase de lancement du candidat (woo!), Mais après avoir vu la liste des fonctions déjà obsolètes qui ont finalement été supprimées, cela m'a fait réfléchir casserait mon ancien code.Migration vers une version plus récente de PHP

En plus d'effectuer un test de type «aspirer et voir» (installation sur un serveur de test et essayer), existe-t-il des outils de migration capables d'analyser votre code pour mettre en évidence les problèmes? Par exemple, si certains scripts utilisent les fonctions ereg_*.

+0

Quelle version exécutez-vous actuellement? – cletus

+0

5.2.4, bien que cela ne devrait pas avoir d'importance? – nickf

+0

Eh bien, je peux penser à des problèmes si vous allez de 5.1 -> 5.3 qui ne sera pas là si vous passez de 5.2 -> 5.3. De coruse courant et de nouvelles versions sont tous deux pertinents. – cletus

Répondre

1

Rien ne vaut l'installation sur un serveur de test et l'exécution de vos tests unitaires. Vous avez des tests unitaires, n'est-ce pas? ;)

+0

Les tests unitaires sont FTW, mais je pense qu'il a explicitement dit qu'il voulait une heuristique qui n'implique pas un serveur de test. :-) – Benson

+0

ouais désolé pour la mise en garde arbitraire, mais je me demandais s'il y avait autre chose à part ça. En outre, il existe des logiciels tiers pour lesquels je n'ai pas de tests unitaires. – nickf

4

Une technique que vous pourriez utiliser est de prendre la liste des fonctions obsolètes qui sont supprimées et grep pour eux. Un petit shell scripting fu va un long chemin pour des choses comme ça.

Supposons que vous avez un deprecated.txt de fichier avec des noms de fonction dépréciée une par ligne:

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

qui vous dira toutes les instances des fonctions dépréciées que vous utilisez.

+1

Plutôt que de re-grep dans une boucle, il est probablement plus efficace de créer une instruction comme: egrep -R '(dep_func_1 | dep_func_2 | etc ...)'/chemin/vers/src Une autre option serait de générer un fichier de trace xdebug, qui inclura les noms des fonctions appelées - mais il serait difficile d'obtenir une couverture de code de 100% –

+0

Bien sûr, cela serait plus efficace, mais il est un peu plus difficile d'écrire un shell facile à lire script qui lit dep_func_1, dep_func_2, etc. à partir d'un fichier et fait le grep. Je l'ai fait pour la facilité de la lisibilité, pas pour la vitesse. :-P – Benson

Questions connexes