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 = 1 ; # par exemple
00105
00106 switch ($j) {
00107 case 0 :
00108 echo " V2 pas de cours \n" ;
00109 case 1 :
00110 echo " V2 début de week-end \n" ; # affiché
00111 $j = 2 ;
00112 case 2 :
00113 echo " V2 pas de chance \n" ; # affiché aussi
00114 $j = 2 ;
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 = 1 ; # par exemple
00122
00123 switch ($j) {
00124 case 0 :
00125 echo " V3 pas de cours \n" ;
00126 break ;
00127 case 1 :
00128 echo " V3 début de week-end \n" ; # seul affichage, c'est bien !
00129 $j = 2 ;
00130 break ;
00131 case 2 :
00132 echo " V3 pas de chance \n" ;
00133 $j = 2 ;
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 = 5 ;
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 = 1 ;
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 à la page principale de (gH)