Partage
  • Partager sur Facebook
  • Partager sur Twitter

les if else sans accolades : la limite?

Sujet résolu
    28 mars 2011 à 2:17:46

    Salut,
    pouvez-vous m'expliquer un truc? dans une condition if else, si on ne met pas les accolades { } , par exemple

    Citation

    if (XX == YY)
    texte
    autre texte

    3e texte



    il faut simplement sauter une ligne pour sortir de la condition (là où se trouve '3e titre')? j'avoue avoir vu des scripts qui ne m'avaient pas l'air clair... :)

    Si quelqu'un a une réponse,
    Merci !
    • Partager sur Facebook
    • Partager sur Twitter
      28 mars 2011 à 2:19:18

      Il me semble que si tu ne mets pas les accolades tu as le droit qu'à une ligne.
      Du moin, je m'en sers toujours de cette façon. Je ne les mets pas quand j'ai qu'une ligne à écrire dans ma condition.
      • Partager sur Facebook
      • Partager sur Twitter
        28 mars 2011 à 2:21:39

        Citation : Napster2k3

        Il me semble que si tu ne mets pas les accolades tu as le droit qu'à une ligne.


        Tu peux même être sûr! :p
        • Partager sur Facebook
        • Partager sur Twitter
          28 mars 2011 à 2:25:18

          Pas vraiment, en fait. Ce serait plutôt une instruction ou un bloc d'instruction.

          Par exemple, ceci est sur une ligne, mais ça ne passe pas :
          <?php
              if (true)
                  echo "test"; echo "test";
              else
                  echo "bla";
          


          Par contre, ceci est tout à fait valable :
          <pre>
          <?php
              if (true)
                  if (false)
                      if (true)
                          echo "a";
                      else
                          echo "b";
                  else
                      echo "c";
              else
                  echo "d";
          


          Après, c'est certain que ça peut complexifier le code si on en abuse.
          • Partager sur Facebook
          • Partager sur Twitter
            28 mars 2011 à 2:30:29

            et au niveau de plusieurs instructions, que donne ceci (je n'ai pas php installé, je ne peux pas tester) :

            <?php
            $a = true;
            if($a)
                echo 'banane ', echo 'flambee';
            else echo 'raté';
            ?>
            

            ?
            • Partager sur Facebook
            • Partager sur Twitter
              28 mars 2011 à 2:37:38

              Citation : captaingigicoin

              et au niveau de plusieurs instructions, que donne ceci (je n'ai pas php installé, je ne peux pas tester) :

              <?php
              $a = true;
              if($a)
                  echo 'banane ', echo 'flambee';
              else echo 'raté';
              ?>
              


              ?



              C'est testé :p
              et voici le résultat :
              Parse error: parse error in C:\wamp\www\test.php on line 4
              • Partager sur Facebook
              • Partager sur Twitter
                28 mars 2011 à 2:44:19

                ok merci :)

                je savais juste que c'était possible en C, mais visiblement pas en php. :p
                • Partager sur Facebook
                • Partager sur Twitter
                  28 mars 2011 à 3:23:40

                  ok, et donc on peut mettre 10 lignes à la verticale à la suite après le if, mais si on saute une ligne, on sort du if ? (imaginons que l'on n'ait pas de else, juste un if ) , c'est bien ça ?

                  ;-)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 mars 2011 à 3:24:17

                    Non, c'est une seule instruction.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 avril 2024 à 9:47:35

                      Je déterre un peu le sujet, mais à priori les blocs sans accolades ça ne correspond pas au standards du PSR.

                      Voilà à quoi doit ressembler une condition dans le PSR : https://www.php-fig.org/psr/psr-12/#51-if-elseif-else

                      Cela peut représenter une faille de sécurité : https://wiki.sei.cmu.edu/confluence/display/c/EXP19-C.+Use+braces+for+the+body+of+an+if%2C+for%2C+or+while+statement#:~:text=Opening%20and%20closing%20braces%20for,not%20conclude%20with%20a%20semicolon.

                      Une réponse Stackoverflow à ce sujet : https://stackoverflow.com/questions/31897521/psr-2-if-statement-what-is-allowed

                      Et en général le PSR préconise d'ajouter des accolades à chaque structure : https://www.php-fig.org/psr/psr-2/#5-control-structures

                      Et surtout je trouve que c'est beaucoup plus lisible, svp ajoutez des accolades pour la lisibilité du code 🙏 ;)

                      -
                      Edité par Cedric-J54 8 avril 2024 à 9:48:43

                      • Partager sur Facebook
                      • Partager sur Twitter

                      les if else sans accolades : la limite?

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      • Editeur
                      • Markdown