Valid XHTML     Valid CSS2    

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.php
     

et à 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 lignes
     
     

2.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 gH    Retour à la page principale de   (gH)