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 :

Réécriture de code ?


Sujet :

Langage PHP

  1. #1
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut Réécriture de code ?
    Bonjour à tous,

    Vous trouverez ci dessous un bout de code qui me semble optimisable d'une point de vue ligne de code. En effet, on teste un paramètre qui ne fait "que" change la table et la colonne à utiliser pour la sélection... Sauf que mon niveau actuel en php ne me permet pas de voir comment commencer... vous auriez une piste ? Merci.
    Manu

    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
    41
    42
    43
    44
    45
    46
    47
    		if (empty($data['vignette']))
    		{
    			$lvignette = "" ;
    			switch ($params['gdisplay_colors'])
    			{
    				case 0: // AGENDA
    					if (isset($data['agenda_id'])) 
    					{
    						$query = $db->getQuery(true);
    						$query->select('vignette')->from('`#__agenda`')->where('id = ' . (int)$data['agenda_id']);
    						$db->setQuery($query);
    						$results = $db->loadObject();
    						if ($results)
    						{
    							$lvignette = $results->vignette;
    						}
    					}
    					break;
    				case 1: // ACTIVITY
    					if (isset($data['activity_id'])) 
    					{
    						$query = $db->getQuery(true);
    						$query->select('vignette')->from('`#__activities`')->where('id = ' . (int)$data['activity_id']);
    						$db->setQuery($query);
    						$results = $db->loadObject();
    						if ($results)
    						{
    							$lvignette = $results->vignette;
    						}
    					}
    					break;
    				case 2: // CATEGORY
    					if (isset($data['category_id'])) 
    					{
    						$query = $db->getQuery(true);
    						$query->select('vignette')->from('`#__categories`')->where('id = ' . (int)$data['category_id']);
    						$db->setQuery($query);
    						$results = $db->loadObject();
    						if ($results)
    						{
    							$lvignette = $results->vignette;
    						}
    					}
    					break;
    			}
    			$data['vignette'] = $lvignette ;
    		}
    Emmanuel Lecoester
    => joomla addict.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Salut,

    Teste ceci pour voir si tu as de meilleurs résultats :

    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
     
    if (empty($data['vignette'])) {
     
        $lvignette = null;
        $tab = new SplFixedArray(3);
        $tab[0] = ['`#__agenda`', 'agenda_id'];
        $tab[1] = ['`#__activities`', 'activity_id'];
        $tab[2] = ['`#__categories`', 'category_id'];
     
        $query = $db->getQuery(true);
        $query->select('vignette')->from($tab[$params['gdisplay_colors']][0])->where('id = ' . (int)$data[$params['gdisplay_colors']][1]);
        $db->setQuery($query);
        $results = $db->loadObject();
        if ($results) {
            $lvignette = $results->vignette;
        }
        $data['vignette'] = $lvignette;
    }

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    le code de MaitrePylos est tiptop, le seul point un peu tordu c'est d'utiliser SplFixedArray quand l'apprenant dit clairement qu'il a un niveau faible
    Tu peux arriver au même résultat avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $tab = [
        ['`#__agenda`', 'agenda_id'],
        ['`#__activities`', 'activity_id'],
        ['`#__categories`', 'category_id']
    ];

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Citation Envoyé par rawsrc Voir le message

    le code de MaitrePylos est tiptop, le seul point un peu tordu c'est d'utiliser SplFixedArray quand l'apprenant dit clairement qu'il a un niveau faible
    Je m'excuse du peu, mais il a demandé 'optimalisable' et la classe SplFixeArray est la plus rapide

    Après s'il veut plus de commentaire, je suis son homme

  5. #5
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    lol les mecs j'ai pas dit noob non plus

    merci beaucoup pour la réponse.

    Juste que je n'ai pas les réflexes d'optimisation de bout de code avec des tableaux&cie
    Emmanuel Lecoester
    => joomla addict.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 06/08/2013, 14h21
  2. Réponses: 6
    Dernier message: 02/08/2012, 17h33
  3. Réécriture avec code langue en début d'URL
    Par redah75 dans le forum Apache
    Réponses: 35
    Dernier message: 12/03/2012, 23h09
  4. Réécriture d'un code javascript
    Par Rony Rauzduel dans le forum jQuery
    Réponses: 3
    Dernier message: 06/01/2012, 15h55

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