PHP : Condition ternaire en doublon

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par sff, 31 Mai 2018.

  1. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    533
    J'aime reçus:
    0
    Bonjour,

    je suis en train de coder un petit site et j'ai un soucis avec 2 conditions identiques "(isset($_SESSION['id']))". Je ne sais pas comment je pourrais les rassembler afin de faire plus propre. Si quelqu'un à une idée je suis preneur :

    Code:
    try{
    
        switch (key($_GET)) {
            
        case 'mes_logements':
            include('templates/pages/mes_logements.php');   
            break;
            default :
            include (isset($_SESSION['id'])) ? 'templates/pages/home.php' : 'templates/pages/login.php';
            break;
            
        }
        
    } catch (PDOException $e){ echo 'Erreur SQL : '. $e->getMessage().'<br>'; die(); }
    
    echo $view-> render((isset($_SESSION['id']))? 'templates/layouts/primary.php' : 'templates/layouts/login.php');
    Merci d'avance
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 162
    J'aime reçus:
    337
    En définissant une autre variable qui contient la valeur du isset(), mais ce n'est pas spécialement plus propre.
    Par contre l'indentation (p-e tronquée par le forum, je n'en sais rien) et le non respect des normes PSR, ça oui c'est pas propre.
     
  3. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    533
    J'aime reçus:
    0
    J'ai fais ceci finalement. Ca fait plus propre :

    Code:
        if(!isset($_SESSION['id'])){
    
            switch ($_GET) {
                
            case 'my_homes':
                include('templates/pages/my_homes.php');   
                break;
                default :
                include ('templates/pages/dashboard.php');
                break;
            }
            
            echo $view-> render('templates/layouts/primary.php');
            
        }else{
            
            include ('templates/pages/login.php');
            
            echo $view-> render('templates/layouts/login.php');   
        }
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 162
    J'aime reçus:
    337
    PHP:
    switch ($_GET) {
    $_GET est un array

    Alors j'aurais plutôt fait comme ceci:
    PHP:
    <?php
    $layout 
    'login';
    $page 'login';

    if (!isset(
    $_SESSION['id'])) {
        
    $layout 'primary';
        
    $page key($GET) === 'my_homes' 'my_homes' 'dashboard';
    }

    include 
    "templates/pages/{$page}.php";
    echo 
    $view->render("templates/layouts/{$layout}.php");
     
    #4 spout, 31 Mai 2018
    Dernière édition: 31 Mai 2018
  5. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 162
    J'aime reçus:
    337
    Pardon, je px plus éditer :
    PHP:
    key($_GET)
     
  6. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    533
    J'aime reçus:
    0
    J'avais pas pensé à cette solution. Par contre j'ai un doute concernant cette ligne :

    $page = key($GET) === 'my_homes' ? 'my_homes' : 'dashboard';

    Plus tard j'aurais bien plus qu'une condition, j'aurais toujours my_homes, mais il y en aura egalement une dizaine d'autres dont la page et le layout auront toujours le meme nom.

    Un switch n'est pas préférable ?
     
  7. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 162
    J'aime reçus:
    337
    S'il y en a plusieurs, je ferais un array des pages valides:
    PHP:
    <?php
    $pages 
    = ['my_homes''page_foo''page_bar'];
    if (
    in_array(key($_GET$pages))) {...}
     
  8. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    533
    J'aime reçus:
    0
    J'avais pensé à ca car dans ta solution précédente il n'y a pas de défaut si $_GET est vide

    Code:
    $layout = 'login';  
    
    if(isset($_SESSION['id'])){
       
        $layout = 'primary';
       
        $page = (($_GET) != null) ? $_GET : 'dashboard' ;
       
    }else
    
    $page = (($_GET) != null) ? $_GET : 'login' ;
    
    include ('templates/pages/'.$page.'.php');
    
    echo $view->render("templates/layouts/{$layout}.php");
     
  9. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    533
    J'aime reçus:
    0
    Peut-on optimiser le code ?
     
  10. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 162
    J'aime reçus:
    337
    Attention que $_GET est tjs un array.
     
Chargement...
Similar Threads - PHP Condition ternaire Forum Date
conditions php Développement d'un site Web ou d'une appli mobile 19 Mars 2017
Améliorer une suite de conditions php Développement d'un site Web ou d'une appli mobile 10 Novembre 2016
Condition mysql/php Développement d'un site Web ou d'une appli mobile 12 Mai 2014
Condition php sur un formulaire qui ne passe pas? Développement d'un site Web ou d'une appli mobile 14 Mai 2013
[PHP] Condition et include Développement d'un site Web ou d'une appli mobile 31 Janvier 2013
[Wordpress] Php tag conditionnel Développement d'un site Web ou d'une appli mobile 8 Avril 2012
Condition php pour exclure un département Développement d'un site Web ou d'une appli mobile 5 Mars 2012
Aide pour des conditions php Développement d'un site Web ou d'une appli mobile 31 Janvier 2012
Nofollow sur phpbb3 sauf si condition remplie ? Développement d'un site Web ou d'une appli mobile 6 Octobre 2010
[Résolu] Php condition avec test sur url Développement d'un site Web ou d'une appli mobile 14 Janvier 2010
Condition php Développement d'un site Web ou d'une appli mobile 27 Juin 2009
PHP for à double conditions Développement d'un site Web ou d'une appli mobile 6 Juin 2008
XML et condition php Développement d'un site Web ou d'une appli mobile 6 Septembre 2007
[PHP] Condition : ça veut pô... :'( Développement d'un site Web ou d'une appli mobile 10 Août 2007
[Résolu] Afficher du javascript en php sous condition Développement d'un site Web ou d'une appli mobile 21 Juillet 2007
PHP Dernier enregistrement + condition Développement d'un site Web ou d'une appli mobile 25 Janvier 2007
Condition URL Rewriting: *.php => *.html URL Rewriting et .htaccess 31 Août 2006
Problème avec des conditions en PHP Développement d'un site Web ou d'une appli mobile 30 Juin 2006
[Résolu] Probleme pour faire une condition en PHP Développement d'un site Web ou d'une appli mobile 26 Avril 2006
Problème de conditions en PHP avec mysql_result Développement d'un site Web ou d'une appli mobile 5 Janvier 2006