Liste des fichiers inclus et liste des fonctions inventées
plan de développement
1. Essais en ligne de commandes (préliminaires)
1.1 Commandes UNIX simples pour l'inclusion
On essaie de voir dans le fichier index.php (et dans ses fichiers inclus) comment les fichiers sont inclus, sachant qu'il y a 8 syntaxes possibles.
Il faut certainement utiliser grep, ls et find et consulter le manuel en ligne de PHP.
1.2 Commandes UNIX simples pour la définition de fonctions
On essaie de voir dans le fichier index.php et dans les premiers fichiers inclus comment les fonctions sont définies.
Ici aussi, il faut certainement utiliser grep, ls et find.
2. Développement PHP
2.0 Script PHP cli squelette
Comme dans le T.P. numéro 1, on doit développer un script en ligne de commandes avec un paramètre. Il est donc prudent d'écrire, en mode TDD un squelette de programme implémentant les deux tests en couleur :
Test du paramètre : rouge, il n'y a pas de paramètre, vert le paramètre est présent.
Test du fichier passé en paramètre : rouge, le fichier n'est pas présent, vert le fichier est présent.
Au passage, on viendra inventer les fonctions
dateEtHeure()
souligne() où on peut utiliser "=" ou "-" comme caractère de soulignement
de façon à gérer correctement les trois cas d'exécution suivant
$gh> php listefnsV0.php Appel incorrect du programme. Il faut donner un nom de fichier PHP à analyser. Exemples : php listefnsV0.php index.php php listefnsV0.php action8.php $gh> php listefnsV0.php indexe.php Exécution impossible, le fichier indiqué, soit indexe.php n'est pas vu. $gh> php listefnsV0.php index.php Analyse du fichier index.php dans /home/gh/public_html/Decra ============================ 08/06/2012 11:18 Liste des fichiers inclus ------------------------- [...]2.1 Script PHP cli pour les inclusions seulement
L'idée ici est juste de détecter quels fichiers sont inclus et d'en faire une liste, sachant qu'un fichier peut demander à inclure un fichier déjà inclus. Dans la mesure où la sortie de cette version 1 peut ressembler à :
Analyse du fichier index.php dans /home/gh/public_html/tests/sh ============================ 17/10/2013 15:39 Liste des fichiers inclus ------------------------- index.php stdleadb.php design.php fonction.php lesget.php menus.php tabres.php basic.php fonction_prot.php statunoleadb.php action0.php action1.php action2.php action3.php action4.php action5.php action6.php action7.php action8.php action9.php action10.php action11.php action12.php action13.php action14.php strfun.phpet à cause des retours un peu particuliers de la fonction strpos() on viendra [ré]inventer les fonctions (pas des méthodes)
nbMots($chaine) # retourne le nombre de mots contenus dans la chaîne de caractères $chaine
mot($chaine, $ind) # retourne le $ind-ème mot de la chaîne de caractères $chaine, chaîne vide en cas d'erreur
positionDans($mot, $chaine) # retourne le numéro du mot $mot dans la chaîne de caractères $chaine, 0 si non vu
phraseSansPremierMot($chaine) # retourne la chaîne de caractères $chaine privée de son premier mot
On pourra donc constituer une chaine de caractères construite au fur et à mesure avec les noms de fichier à inclure.
2.2 Script PHP cli complété avec les nombres de lignes
On trie la liste précédente des fichiers à inclure et on ajoute le nombre de lignes par fichier et en tout. Une étoile indique le fichier qui a servi de point d'entrée au programme.
La sortie doit maintenant ressembler à :
Analyse du fichier index.php dans /home/gh/public_html/tests/sh ============================ 20/03/2014 16:11 Liste des fichiers inclus ------------------------- 1 action0.php 356 2 action1.php 777 3 action10.php 389 4 action11.php 640 5 action12.php 841 6 action13.php 200 7 action14.php 27 8 action2.php 1564 9 action3.php 259 10 action4.php 3283 11 action5.php 99 12 action6.php 256 13 action7.php 110 14 action8.php 216 15 action9.php 1071 16 basic.php 417 17 design.php 433 18 fonction.php 1491 19 fonction_prot.php 1711 20 * index.php 198 21 lesget.php 850 22 menus.php 220 23 statunoleadb.php 832 24 stdleadb.php 783 25 strfun.php 269 26 tabres.php 771 total 18063 lignes2.3 Script PHP consolidé avec toutes les fonctions
On ajoute la lecture de chaque fichier inclus avec le stockage des noms de fonctions et le numéro de ligne où elles sont définies. On pourra consulter index_php.txt comme exemple de fichier de sortie.
Fichier index_php.txt
2.4 Extensions possibles
Les inclusions qui ont été traitées ici étaient réalisées dans le même répertoire. Il serait prudent de tester ce qui se passe si on utilise une arborescence de répertoires et de fichiers.
Actuellement, lorsqu'un fichier à inclure n'est pas présent, tout le processus s'arrête. On pourrait prévoir de considérer le fichier comme présent mais vide.
Finalement, il serait possible de produire une page Web avec le script écrit. Il faudrait juste rajouter un formulaire pour demander une archive zip et le nom du fichier qui sert de point d'entrée.
Retour à la page principale de (gH)