Valid XHTML     Valid CSS2    

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