Listing du fichier l2aprog02.php avec syntaxhighlighter
<?php # (gH) -_- l2aprog02.php ; TimeStamp (unix) : 20 Février 2013 vers 16:00 error_reporting(E_ALL | E_NOTICE | E_STRICT ) ; ########################################################################### # # # exemple de programme php pour le cours Développement Web Avancé en L2 # # # ########################################################################### # # # # # Tests et Boucles # # # # # ########################################################################### # variables utilisées dans les tests $varA = 0 ; # un nombre, pas forcément entier ou réel $varB = "1" ; # une chaîne qui peut parfois être interprétée comme un nombre $varC = "essai" ; # une chaîne de caractères $varD = TRUE ; # constante prédéfinie dans le coeur (CORE) $varE = array() ; # un tableau (déclaration non obligatoire mais conseillée) define("varF" ,1) ; # noter que la variable est "guillemetisée" # utilisation de if, == et === if ($varA==1) { echo " ok, A vaut 1.\n" ; } else { # si on arrive ici, c'est que A ne vaut pas 1 (c'est ce qui se passe) echo " A ne vaut pas 1.\n" ; } # fin si # avec une constante, pas de $ devant le nom de la variable if ($varB==varF) { echo " égalité entre B et F \n" ; } ; # ce "alors" est exécuté # attention, une erreur classique : (on rentre toujours dans le si) if ($varA=1) { echo " Attention : utiliser = dans un test au lieu de == n'est pas considéré comme une erreur.\n" ; } ; # finsi # écriture anti-naturelle proposée par certains programmeurs pour éviter ce problème if (1==$varA) { echo " on ne risque pas d'exécuter if (1=\$varA) car ce n'est pas une affectation valide.\n" ; } ; # finsi # il faut se méfier de la pré- et de la post-incrémentation intégrée au test echo " avant, A vaut $varA \n" ; # affiche avant, A vaut 1 if ($varA++==1) { echo " mode var++ : A vaut $varA \n "; # affiche mode var++ : A vaut 2 } ; # finsi if (++$varA==2) { echo " mode ++var : A vaut $varA \n "; # non affiché } ; # finsi echo " après, A vaut $varA \n" ; # affiche après, A vaut 3 # écriture conseillée : $varA++ ; # tout seul sur une ligne, et donc équivalent à ++$varA ; # if ($varA==...){ ... if ("1"==1) { echo " PHP ne distingue pas \"1\" et 1 dans les tests avec == (deux signes égales)\n" ; # affiché } ; # fin de si if ("1"===1) { # non ! } else { echo " mais PHP distingue \"1\" et 1 dans les tests avec === (trois signes égale)\n" ; # affiché } ; # fin de si if (!0) { echo " PHP considère 0 comme FAUX, et d'ailleurs FALSE*FALSE vaut ".(FALSE*FALSE)."\n" ; # affiché } ; # fin de si if (!"") { echo " PHP considère aussi la chaîne vide comme FAUX\n" ; # affiché } ; # fin de si # structures de cas (1) ATTENTION, ceci n'est PAS conseillé $jour = "lundi" ; # par exemple switch ($jour) { case "dimanche" : echo " V1 pas de cours \n" ; case "samedi" : echo " V1 début de week-end \n" ; default : echo " V1 ce n'est pas le week-end.\n" ; # affiché } ; # fin de switch # structures de cas (2) ATTENTION ceci est mal conçu (légal, mais pas de break, d'où problème) $j = 1 ; # par exemple switch ($j) { case 0 : echo " V2 pas de cours \n" ; case 1 : echo " V2 début de week-end \n" ; # affiché $j = 2 ; case 2 : echo " V2 pas de chance \n" ; # affiché aussi $j = 2 ; default : echo " V2 ce n'est pas le week-end.\n" ; # hélas, affiché aussi } ; # fin de switch # structures de cas (3) : il faut utiliser break ! ici, c'est bien $j = 1 ; # par exemple switch ($j) { case 0 : echo " V3 pas de cours \n" ; break ; case 1 : echo " V3 début de week-end \n" ; # seul affichage, c'est bien ! $j = 2 ; break ; case 2 : echo " V3 pas de chance \n" ; $j = 2 ; break ; default : echo " V3 ce n'est pas le week-end.\n" ; break ; } ; # fin de switch # la boucle pour (1) for ($idb=1;$idb<=10;$idb++) { if ($idb==1) { echo " début " ; } ; echo "$idb " ; if ($idb==10) { echo " fin \n" ; } ; } # fin de pour sur idb # la boucle pour (2) $ideb = 1 ; $ifin = 10 ; for ($idb=$ideb;$idb<=$ifin;$idb++) { if ($idb==$ideb) { echo " début " ; } ; echo "$idb " ; if ($idb==$ifin) { echo " fin \n" ; } ; } # fin de pour sur idb # la boucle pour (3) $ideb = 1 ; $ifin = 5 ; for ($idb=$ideb;$idb<=$ifin;$idb++) { if ($idb==$ideb) { echo " début " ; } ; echo "$idb " ; if ($idb==$ifin) { echo " fin \n" ; } ; $ifin = 10 ; # maladroit mais cela fonctionne et force ifin à 10 } # fin de pour sur idb # la boucle tant que (1) $n1 = 1 ; $n2 = $n1/10 ; while (abs($n1-$n2)>0) { $n1 = $n2 ; $n2 /= 10 ; } # fin de tant que echo "donc $n1 et $n2 sont considérés comme égaux " ; # la boucle tant que (2) ## une demande classique en ligne de commande # première demande echo "Donnez un nombre " ; $n = fgets(STDIN) ; # relance si chaîne vide while (strlen(trim(chop($n))==0)) { echo "non, pas de chaîne vide ou blanche, redonnez un nombre : " ; $n = fgets(STDIN) ; } ; # fin de tant que echo " Merci, vous avez fourni ".nl2br($n)." comme nombre." ; # affiche <br /> à la place du retour-chariot # remarques # # selon les "règles du p'tit gros", on met toujours des accolades, # même pour une seule instruction # # selon les "règles du p'tit gros", il faut toujours commenter les fins de... # # selon les "règles du p'tit gros", jamais plus de trois niveaux d'imbrication # # il existe aussi une boucle foreach pour les tableaux # ?>La coloration syntaxique est réalisée par : SyntaxHighlighter.
Si vous préférez, vous pouvez utiliser celle de geshi ou même celle construite autour de la fonction highlight_file.
Retour à la page principale de (gH)