Valid XHTML     Valid CSS2    

Listing du fichier l2aprog02.php

 

00001     <?php
00002     
00003     #    (gH)   -_-  l2aprog02.php  ;  TimeStamp (unix) : 20 Février 2013 vers 16:00
00004     
00005     error_reporting
(E_ALL E_NOTICE E_STRICT ) ;
00006     
00007     ###########################################################################
00008     #                                                                         #
00009     # exemple de programme php pour le cours Développement Web Avancé en L2   #
00010     #                                                                         #
00011     ###########################################################################
00012     #                                                                         #
00013     #                                                                         #
00014     #     Tests et Boucles                                                    #
00015     #                                                                         #
00016     #                                                                         #
00017     ###########################################################################
00018     
00019     # variables utilisées dans les tests
00020     
00021     $varA 
0                # un nombre, pas forcément entier ou réel
00022     $varB 
"1"              # une chaîne qui peut parfois être interprétée comme un nombre
00023     $varC 
"essai"          # une chaîne de caractères
00024     $varD 
TRUE             # constante prédéfinie dans le coeur (CORE)
00025     $varE 
= array()          ; # un tableau (déclaration non obligatoire mais conseillée)
00026     define
("varF"    ,1)     ; # noter que la variable est "guillemetisée"
00027     
00028     # utilisation de if, == et ===
00029     
00030     if (
$varA==1) {
00031       echo " ok, A vaut 1.\n" 
;
00032     } else {
00033       # si on arrive ici, c'est que A ne vaut pas 1 (c'est ce qui se passe)
00034       echo 
" A ne vaut pas 1.\n" ;
00035     } # fin si
00036     
00037     # avec une constante, pas de $ devant le nom de la variable
00038     
00039     if (
$varB==varF) { echo " égalité entre B et F \n" ; } ; # ce "alors" est exécuté
00040     
00041     # attention, une erreur classique : (on rentre toujours dans le si)
00042     
00043     if (
$varA=1) {
00044       echo " Attention : utiliser = dans un test au lieu de == n'est pas considéré comme une erreur.\n" 
;
00045     } ; # finsi
00046     
00047     # écriture anti-naturelle proposée par certains programmeurs pour éviter ce problème
00048     
00049     if (
1==$varA) {
00050       echo " on ne risque pas d'exécuter if (1=\$varA) car ce n'est pas une affectation valide.\n" 
;
00051     } ; # finsi
00052     
00053     # il faut se méfier de la pré- et de la post-incrémentation intégrée au test
00054     
00055     echo 
" avant, A vaut $varA \n" ;            # affiche avant, A vaut 1
00056     if (
$varA++==1) {
00057       echo " mode var++ : A vaut 
$varA \n ";    # affiche mode var++ : A vaut 2
00058     } ; 
# finsi
00059     
00060     if (++
$varA==2) {
00061       echo " mode ++var : A vaut 
$varA \n ";    # non affiché
00062     } ; 
# finsi
00063     echo 
" après, A vaut $varA \n" ;            # affiche après, A vaut 3
00064     
00065     
00066     # écriture conseillée :
00067     
00068     $varA
++ ; # tout seul sur une ligne, et donc équivalent à ++$varA ;
00069     # if ($varA==...){ ...
00070     
00071     if (
"1"==1) {
00072       echo " PHP ne distingue pas \"1\" et 1 dans les tests avec == (deux signes égales)\n" 
# affiché
00073     } ; 
# fin de si
00074     
00075     if (
"1"===1) {
00076       # non !
00077     } else {
00078       echo " mais PHP distingue \"1\" et 1 dans les tests avec === (trois signes égale)\n" 
# affiché
00079     } ; 
# fin de si
00080     
00081     if (!
0) {
00082       echo " PHP considère 0 comme FAUX, et d'ailleurs FALSE*FALSE vaut "
.(FALSE*FALSE)."\n" # affiché
00083     } ; 
# fin de si
00084     
00085     if (!
"") {
00086       echo " PHP considère aussi la chaîne vide comme FAUX\n" 
# affiché
00087     } ; 
# fin de si
00088     
00089     # structures de cas (1) ATTENTION, ceci n'est PAS conseillé
00090     
00091     $jour 
"lundi" # par exemple
00092     
00093     switch (
$jour) {
00094       case "dimanche" 
:
00095         echo " V1 pas de cours \n" 
;
00096       case "samedi" 
:
00097         echo " V1 début de week-end \n" 
;
00098       default :
00099         echo " V1 ce n'est pas le week-end.\n" 
;   # affiché
00100     } ; 
# fin de switch
00101     
00102     # structures de cas (2) ATTENTION ceci est mal conçu (légal, mais pas de break, d'où problème)
00103     
00104     $j 
# par exemple
00105     
00106     switch (
$j) {
00107       case 
:
00108         echo " V2 pas de cours \n" 
;
00109       case 
:
00110         echo " V2 début de week-end \n" 
;          # affiché
00111         $j 
;
00112       case 
:
00113         echo " V2 pas de chance \n" 
;              # affiché aussi
00114         $j 
;
00115       default :
00116         echo " V2 ce n'est pas le week-end.\n" 
;   # hélas, affiché aussi
00117     } ; 
# fin de switch
00118     
00119     # structures de cas (3) : il faut utiliser break ! ici, c'est bien
00120     
00121     $j 
# par exemple
00122     
00123     switch (
$j) {
00124       case 
:
00125         echo " V3 pas de cours \n" 
;
00126         break ;
00127       case 
:
00128         echo " V3 début de week-end \n" 
;     # seul affichage, c'est bien !
00129         $j 
;
00130         break ;
00131       case 
:
00132         echo " V3 pas de chance \n" 
;
00133         $j 
;
00134         break ;
00135       default :
00136         echo " V3 ce n'est pas le week-end.\n" 
;
00137         break ;
00138     } ; # fin de switch
00139     
00140     # la boucle pour (1)
00141     
00142     for (
$idb=1;$idb<=10;$idb++) {
00143       if ($idb
==1) { echo " début " ; } ;
00144       echo "
$idb " ;
00145       if ($idb
==10) { echo " fin \n" ; } ;
00146     } # fin de pour sur idb
00147     
00148     # la boucle pour (2)
00149     
00150     $ideb 
1  ;
00151     $ifin 
10 ;
00152     for ($idb
=$ideb;$idb<=$ifin;$idb++) {
00153       if ($idb
==$ideb) { echo " début " ; } ;
00154       echo "
$idb " ;
00155       if ($idb
==$ifin) { echo " fin \n" ; } ;
00156     } # fin de pour sur idb
00157     
00158     # la boucle pour (3)
00159     
00160     $ideb 
1  ;
00161     $ifin 
;
00162     for ($idb
=$ideb;$idb<=$ifin;$idb++) {
00163       if ($idb
==$ideb) { echo " début " ; } ;
00164       echo "
$idb " ;
00165       if ($idb
==$ifin) { echo " fin \n" ; } ;
00166       $ifin 
10 # maladroit mais cela fonctionne et force ifin à 10
00167     
# fin de pour sur idb
00168     
00169     # la boucle tant que (1)
00170     
00171     $n1 
;
00172     $n2 
$n1/10 ;
00173     while (abs
($n1-$n2)>0) {
00174       $n1  
$n2 ;
00175       $n2 
/= 10 ;
00176     } # fin de tant que
00177     echo 
"donc $n1 et $n2 sont considérés comme égaux " ;
00178     
00179     # la boucle tant que (2)
00180     
00181     ## une demande classique en ligne de commande
00182     
00183     # première demande
00184     
00185     echo 
"Donnez un nombre " ;
00186     $n  
fgets(STDIN) ;
00187     
00188     # relance si chaîne vide
00189     
00190     while (
strlen(trim(chop($n))==0)) {
00191       echo "non, pas de chaîne vide ou blanche, redonnez un nombre : " 
;
00192       $n  
fgets(STDIN) ;
00193     } ; # fin de tant que
00194     echo 
" Merci, vous avez fourni ".nl2br($n)." comme nombre." # affiche <br /> à la place du retour-chariot
00195     
00196     # remarques
00197     #
00198     #   selon les "règles du p'tit gros", on met toujours des accolades,
00199     #   même pour une seule instruction
00200     #
00201     #   selon les "règles du p'tit gros", il faut toujours commenter les fins de...
00202     #
00203     #   selon les "règles du p'tit gros", jamais plus de trois niveaux d'imbrication
00204     #
00205     #   il existe aussi une boucle foreach pour les tableaux
00206     #
00207     
00208     ?>

La coloration syntaxique est réalisée par un enrobage de la function php nommée highlight_file

mais si vous préférez, vous pouvez utiliser celle de SyntaxHighlighter ou même celle de geshi.

Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.

 

 

retour gH    Retour à la page principale de   (gH)