IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Conseil de conception


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    IUT Informatique
    Inscrit en
    Mars 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : IUT Informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 412
    Par défaut Conseil de conception
    Bonjour,

    Je voudrai juste avoir un conseil sur la conception d'un menu

    En faite dans la première boîte où j'étais pour savoir quel onglet du menu était sélectionné (sachant que le header était dans un fichier .php pour qu'il soit commun à toutes les pages) on créer une variable par onglet et on se retrouvais avec un truc de ce style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    $page01 = "";
    $page02 = "selected";
    $page03 = "";
     
    <ul>
         <li class="<?php echo $page01;?>">onglet 1</li>
         <li class="<?php echo $page02;?>">onglet 2</li>
         <li class="<?php echo $page03;?>">onglet 3</li>
    </ul>
    ?>
    Dans la nouvelle boîte, leur menu est légèrement différent. Il y a une seule variable et il y a des vérifs pour chaque onglet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    $onglet_actif = 2;
     
     
    <ul>
         <li class="<?php if($onglet_actif == 1) echo 'selected';?>">onglet 1</li>
         <li class="<?php if($onglet_actif == 2) echo 'selected';?>">onglet 2</li>
         <li class="<?php if($onglet_actif == 3) echo 'selected';?>">onglet 3</li>
    </ul>
    ?>
    J'arrive pas trop à savoir quelle manière est la meilleure niveau conception.
    Si vous pouvez m'éclairer ...

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Perso, je préfère la 2ème méthode, tu n'as qu'une seule variable pour gérer la sélection, facile à manipuler. Tu n'as qu'à changer seulement sa valeur, or qu'avec la première méthode, tu dois modifier les 3 variables à chaque changement.

    A+.

  3. #3
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    A vrai dire, je doute qu'il y ait une recommandation au niveau conceptuel, je parlerai plus d'une préférence.
    Personnellement, je préfère la 1ère méthode mais avec un tableau derrière au lieu de 15 variables. Vu que c'est généralement très redondant, tu peux factoriser grandement le code en passant un tableau de menus et le menu actif comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    function renderTabs($menus, $active)
    {
        $n             = count($menus);
        $tabs          = array_fill(1, $n, '');
        $tabs[$active] = 'selected';
     
        echo '<ul>';
     
        for ($i = 1 ; $i <= $n ; ++$i)
        {
            echo
    <<<HTML
        <li class="{$tabs[$i]}">{$menus[$i]}</li>
    HTML;
        }
     
        echo '</ul>';
    }
     
    renderTabs(array(1 => 'menu 1', 'menu 2', 'menu 3'), 2);

  4. #4
    Membre chevronné
    Homme Profil pro
    IUT Informatique
    Inscrit en
    Mars 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : IUT Informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 412
    Par défaut
    Merci pour vos réponses.

    Je pense que je vais opter pour le 2ème méthode. Je vais éviter de créer des fonctions pour ça, puis au moins je reste dans le fonctionnement du menu qui était déjà en place.

    Encore merci

  5. #5
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    La deuxième méthode est évidement la plus propre car elle évite la création de variables inutiles.

    Je serais toi, j'utiliserai la syntaxe alternative comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
     
    // définition des pages du site
    $sitemap = array(
        'menu' => array(
            '/' => 'Accueil',
            '/about' => 'A propos',
            '/articles' => 'Articles',
        ),
    );
     
    // page courante
    $request_uri = parse_url( $_SERVER['REQUEST_URI'] );
     
    ?>
    <ul class="menu">
        <? foreach ($sitemap['menu'] as $url => $name): ?>
        <li <? if ($url == $request_uri['path']): ?>class="selected"<? endif ?>>
            <a href="<?=$url?>"><?=$name?></a>
        </li>
        <? endforeach ?>
    </ul>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conseil de conception
    Par olive_le_malin dans le forum C++
    Réponses: 19
    Dernier message: 24/07/2007, 09h23
  2. Conseils en Conception / Architecture
    Par olive_le_malin dans le forum C++
    Réponses: 4
    Dernier message: 03/02/2007, 02h18
  3. conseil pour conception de base
    Par karidrou dans le forum Modélisation
    Réponses: 1
    Dernier message: 16/01/2007, 18h11
  4. Conseil de conception
    Par PadawanDuDelphi dans le forum Delphi
    Réponses: 6
    Dernier message: 30/10/2006, 18h07
  5. Conseil sur conception : Référencer les applications
    Par alladdinbh dans le forum Modélisation
    Réponses: 3
    Dernier message: 25/09/2006, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo