Partage
  • Partager sur Facebook
  • Partager sur Twitter

Simplifier un petit code

Sujet résolu
    10 décembre 2018 à 12:06:15

    Bonjour,

    je souhaite savoir si il y a possibilité de simplifier ou d'optimiser ce petit code. J'ai tenté plusieurs solution en vain. 

    	$templateRoot = 'templates/pages/';
    
    	if (isset($_GET['page'])){
    		
    		$templatePage = $_GET['page'];
    		
    		include($templateRoot.((is_file($templateRoot.$templatePage.'.php')) ? $templatePage : '404').'.php');
    		
    		if($_GET['page'] != 'results_input') {echo $view-> render('templates/layouts/primary.php');}	
    		
    	}else{
    		
    		$templatePage = 'home';
    		
    		include($templateRoot.((is_file($templateRoot.$templatePage.'.php')) ? $templatePage : '404').'.php');
    		
    		echo $view-> render('templates/layouts/primary.php');
    	}	



    • Partager sur Facebook
    • Partager sur Twitter
      10 décembre 2018 à 12:24:26

      salut,

      tu utilises les mêmes formules dans ta condition, tu n'as donc qu'une data qui peut changer.

      c'est possible de le réduire ; perso, je le ramène à 4 lignes.

      • Partager sur Facebook
      • Partager sur Twitter
      Winter Is Coming - Explorez le forum : votre problème a déjà dû être traité ailleurs
        10 décembre 2018 à 15:36:49

        $templateRoot = 'templates/pages/';
         
        if(isset($_GET['page']) && in_array($_GET['page'], array('results_input'))) {
            $templatePage = $_GET['page'];
        } else {
            $templatePage = 'home';
        }
             
        include($templateRoot.((is_file($templateRoot.$templatePage.'.php')) ? $templatePage : '404').'.php');
        echo $view-> render('templates/layouts/primary.php');

        Attention dans sa première condition il y a une seconde condition à ne pas ignorer. Le code ci-dessus est adapté pour les multiples conditions à venir dans l'évolution de ton système. Par contre, c'est bizarre que les deux echo renvoient vers primary.php, mais on ne connais pas ton architecture, après.

        En théorie via ton modèle de vérification (avant dernière ligne dans mon code) tu seras en mesure de tout réduire en.. 3-4 lignes, en l'appliquant à mon premier IF. Attention après, d'un point de vu personnel, il s'agit d'une optimisation du nombre de ligne, pas des performances ! Il est donc mieux d'organiser ton code comme tu le souhaites. Facilites toi la vie ! :ange:

        -
        Edité par RPGBookOnline 10 décembre 2018 à 15:43:52

        • Partager sur Facebook
        • Partager sur Twitter
          10 décembre 2018 à 15:43:57

          Réduit au max, ça donne un truc comme ça :

          <?php
              $templateRoot = 'templates/pages/';
          
              $templatePage = (isset($_GET['page'])) ? $_GET['page'] : 'home';
              include($templateRoot.((is_file($templateRoot.$templatePage.'.php')) ? $templatePage : '404').'.php');
              echo ($templatePage != 'results_input') ? $view-> render('templates/layouts/primary.php') : '';

          mais en effet, réduction du nombre de lignes ne veut pas dire amélioration des perfs. ;)

          -
          Edité par rga 10 décembre 2018 à 15:45:15

          • Partager sur Facebook
          • Partager sur Twitter
          Winter Is Coming - Explorez le forum : votre problème a déjà dû être traité ailleurs
            10 décembre 2018 à 16:11:50

            @rga : Tiens, tu restes sur le fonctionnement conditionnel de l'auteur du poste. C'est peut être une erreur de ma part, la façon dont j'ai simplifier la dernière condition. Au final, ce n'est que la placer à un endroit différent. Bien joué. :ange:
            @sagaff : La dernière ligne du code de @rga peut aussi inclure in_array() dans le cas ou tu as plusieurs pages (autre que "results_input") qui viendraient s'incrémenter à ta condition. C'est maintenant à toi de voir quelle solution te convient le mieux ! :ange:
            Tu peux aussi utiliser OR (||), bien entendu.

            -
            Edité par RPGBookOnline 10 décembre 2018 à 16:13:11

            • Partager sur Facebook
            • Partager sur Twitter
              10 décembre 2018 à 16:37:35

              @RPGBookOnline : j'ai eu un doute aussi, mais en fait, ta condition est pas mal non plus.
              il n'y a que le in_array() qui me semble faux, puisque dans le post initial, @sagaff indique bien :
              if($_GET['page'] != 'results_input') {echo $view-> render('templates/layouts/primary.php');}

              donc en prenant ta condition et en gardant le in_array(), il faut :

              if(isset($_GET['page']) && !in_array($_GET['page'], array('results_input'))) {

              ce qui doit empêcher la page results_input de s'afficher.

              • Partager sur Facebook
              • Partager sur Twitter
              Winter Is Coming - Explorez le forum : votre problème a déjà dû être traité ailleurs
                10 décembre 2018 à 16:47:41

                En effet ! :ange:

                A vouloir aller trop vite, j'ai oublié d'inverser la condition sur l'in_array(). Ma faute. :ange:

                • Partager sur Facebook
                • Partager sur Twitter
                  10 décembre 2018 à 18:18:53

                  Merci beaucoup pour vos solutions.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Simplifier un petit code

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown