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 :

simplifier cette fonction


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut simplifier cette fonction
    function trie($current_category_id,$sort_by1,$titre1,$page,$row_by_page,$manufacturer,$search,$ppr_ch,$pf_ch){
    $params='cPath='. $current_category_id .'&page=' . $page.'&row_by_page=' . $row_by_page . '&manufacturer=' . $manufacturer.(isset($search) ? '&search='.$search : '').'&ppr_ch='.$ppr_ch.'&pf_ch='.$pf_ch;
    echo $params;
    }
    a chaque fois que je l'utilise
    je l'appelle comme ceci
    trie($current_category_id,$sort_by1='p.products_model',$titre1=TABLE_HEADING_MODEL,$page,$row_by_page,$manufacturer,$search,$ppr_ch,$pf_ch);
    et comme j'appelle la fonction plusieurs fois avec des paramètres différentes .Je suis obligé d'ecrire la ligne la fonction à chaque fois
    <?php trie($current_category_id,$sort_by1='p.products_model_f',$titre1=TABLE_HEADING_MODEL_F,$page,$row_by_page,$manufacturer,$search,$ppr_ch,$pf_ch)?>
    <?php trie($current_category_id,$sort_by1='p.products_pa',$titre1=TABLE_HEADING_PRODUCTS_PA,$page,$row_by_page,$manufacturer,$search,$ppr_ch,$pf_ch)?>
    <?php trie($current_category_id,$sort_by1='p.products_weight',$titre1=TABLE_HEADING_WEIGHT,$page,$row_by_page,$manufacturer,$search,$ppr_ch,$pf_ch)?>
    j'aimerais savoir s'il y a une possibilité de simplifier la fonction trie
    en lui donnant moins de parametres du genre
    trie($current_category_id,$sort_by1,$titre1,$param)
    et $param prend en compte les variables restantes qui sont
    ,$page,$row_by_page,$manufacturer,$search,$ppr_ch,$pf_ch
    merci d'avance

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    C'est pas un problème de complexité c'est un problème de lisibilité.

    ya bien une solution mais c'est plus compliqué que ce qui existe déjà.


    tu fais un objet, qui stockes toutes les variables d'appel de la fonction.
    tu poses 2 ou 3 méthodes sur l'objet: un constructeur(), ta fonction trie() et éventuellement __set() si les attributs sont protégés/privés. ensuite avant chaque appel tu modifies uniquement l'attribut qui a changé.

    C'est pas moins complexe. C'est juste plus facile à lire.

  3. #3
    Membre régulier

    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mai 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2010
    Messages : 10
    Billets dans le blog
    1
    Par défaut
    Dans une fonction :
    mafonction($arg, $arg1=null, $arg2=null)
    les deux derniers arguments deviennent facultatifs.
    Il suffit de créer une classe qui va permettre de stocker les arguments facultatifs.
    La fonction va donc devoir faire plusieurs choses :
    - stocker les valeurs facultatives fournies lors de son appel ;
    - récupérer les valeurs facultatives qui n'ont pas été fournies lors de l'appel ;
    - exécuter le code proprement dit de la fonction.

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Et quelque chose comme cela ? :

    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
     
     
    function trie ($datas)
    {
        $params='cPath='. $datas['current_category']; //....
        echo $params;
    }
     
    $datas = array(
        'current_category'=>$current_category_id,
        'sort_by'=> 'p.products_model_f',
        'titre'    => TABLE_HEADING_MODEL 
        // ...
    );
    trie($datas);
    // Ici tu modifie l'élément du tableau nécessaire
    $datas['titre'] = 'titre 2';
    trie($datas);
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    oh là là ca a l'air balaise pour moi.celui de grunk m'a l'air pas mal du tout

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

Discussions similaires

  1. qu'est ce qui va pas dans cette fonction???
    Par access001 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/04/2006, 13h10
  2. Que veux dire cette fonction
    Par Vlacar dans le forum ASP
    Réponses: 2
    Dernier message: 10/04/2006, 13h28
  3. Comment lancer cette fonction sur un bouton ?
    Par jeronimo dans le forum Access
    Réponses: 2
    Dernier message: 26/01/2006, 11h33
  4. Réponses: 1
    Dernier message: 05/12/2005, 08h10
  5. Réponses: 5
    Dernier message: 03/12/2004, 10h16

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