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 :

[POO] simplification de syntaxe


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Par défaut [POO] simplification de syntaxe
    bonjour à tous

    je me demandais... si je pouvais simplifier ce type de script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ($objet=="type") {
      $table="type";$item="type";
    }
    if ($objet=="genre") {
      $table="genre";$item="genre";
    }
    avec quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $valeur=in_array("type","genre")
    ...
    {
      $table=$valeur;$item=$valeur;
    }
    l'exemple que je donne est basique, mais en fait j'ai des parties de programme qui ne sont que des redondances, avec seulement des variables qui changent en fonction de tests de conditions...

    ou alors le mieux est de créer des fonctions qui, elles, reprendront ces changements de variables?

    si quelqu'un a des pistes...

    merci beaucoup

  2. #2
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    J'ai pas tout compris mais ce qui est sur c'est que les deux bouts de code ne sont pas équivalents !
    Si tu veux simplifier ton premier bout de code, tu peux le remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $table = $item = $object;

  3. #3
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Voilà une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $valeur = array("type","genre");
    if(in_array($objet,$valeur))
    {
     // code
    }

  4. #4
    Membre éclairé Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Par défaut
    oui je suis d'accord avec toi, ce n'est qu'un exemple... mal choisi soit...

    je vais en prendre un autre...

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    if ($objet=="type") {
    	$liste_decoupe_type = preg_split("[, ]", $type, -1, PREG_SPLIT_NO_EMPTY);
    	$liste_decoupe = explode(", ", $type);
    	$compteurbis = "0";$compteur_trouve="0";
    	$liste_type = 'array("';
    	foreach ( $liste_decoupe as $element) {
    		$liste_type = $liste_type.$element.'","';
    		$compteurbis++;		
    	}
    	$liste_type = $liste_type.'"';
    	$liste_type = str_replace(',""',')',$liste_type);
    	$pos = strpos($type, $findme);//echo $pos;
    	if ($pos === false) {
    	} else {
    		$apres_autres = substr($type,$pos); 
    		$valeur_autres_type = str_replace("autres (","", $apres_autres);$valeur_autres_type = str_replace(")","", $valeur_autres_type);
    	   	$test_valeur_autres_type = "1";
    		$valeur_autres=$valeur_autres_type;
    	}
    }
    if ($objet=="genre") {
    	$liste_decoupe_genre = preg_split("[, ]", $genre, -1, PREG_SPLIT_NO_EMPTY);
    	$liste_decoupe = explode(", ", $genre);
    	$compteurbis = "0";$compteur_trouve="0";
    	$liste_genre = "'";
    	foreach ( $liste_decoupe as $element) {
    		$liste_genre = $liste_genre.$element."','";
    		$compteurbis++;		
    	}
    	$liste_genre = $liste_genre."'";
    	$liste_genre = str_replace(",''","",$liste_genre);
    	$pos = strpos($genre, $findme);//echo $pos;
    	if ($pos === false) {
    	} else {
    		$apres_autres = substr($genre,$pos); 
    		$valeur_autres_genre = str_replace("autres (","", $apres_autres);$valeur_autres_genre = str_replace(")","", $valeur_autres_genre);
    		$test_valeur_autres_genre = "1";
    		$valeur_autres=$valeur_autres_genre;
    	}
    }
    j'ai donc ici une 40aine de lignes
    je souhaite n'en avoir que la moitié car je me dis que les seules choses qui changent dans ce script sont la variable $objet qui prend la valeur type puis genre

    la seule question que je me pose pour diminuer la taille de mon code, est ce de créér une fonction et l'appeler en mettant en variable $objet ou bien existe t il mieux au niveau codage?

    merci

  5. #5
    Membre éclairé Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Par défaut
    désolé Kerod, j'étais en train de rédiger quand tu as publié ta réponse...

    du coup à partir de ce qu'a écrit Kerod, j'appelle une fonction ou je mets directement le code dans les accolades? ( en utilisant bien entendu $valeur)

  6. #6
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Citation Envoyé par mussara
    j'ai donc ici une 40aine de lignes
    je souhaite n'en avoir que la moitié car je me dis que les seules choses qui changent dans ce script sont la variable $objet qui prend la valeur type puis genre
    Houla attention ! Il y a quand même quelques différences :

    Tu ne peux simplement supprimer 20 lignes de ton code comme ça, au petit-bonheur-la-chance.
    Tu dois factoriser ton code, mais fais gaffe à ne rien oublier

  7. #7
    Membre éclairé Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Par défaut
    oui je suis d'accord avec toi...
    mais justement ça me permettra d'éviter ce genre de bétise que tu as vue lors de la comparaison que tu as faite...

    bien entendu qu'il faut factoriser...

    merci à tous

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

Discussions similaires

  1. [POO] incompréhension de syntaxe
    Par djedje37et28 dans le forum Langage
    Réponses: 3
    Dernier message: 05/02/2007, 16h01
  2. [POO] Erreur de syntaxe avec une classe
    Par sirbaldur dans le forum Langage
    Réponses: 5
    Dernier message: 10/01/2007, 13h30
  3. [POO] Jolie petite syntaxe
    Par PseudoCoder dans le forum Langage
    Réponses: 11
    Dernier message: 02/10/2006, 15h37
  4. Réponses: 4
    Dernier message: 30/01/2006, 03h08
  5. Réponses: 13
    Dernier message: 15/11/2005, 15h47

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