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 :

Redefinir une constante [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut Redefinir une constante
    Bonjour ,

    Je sais qu'une constante est non redifinissable sinon elle n'est pas une constante

    Mais ma situation m'oblige à redefinir une constante mais sans résultat :
    le code :

    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
    foreach($member as $item) {
        $vl = @doStuff($item);
        if ($vl->langMailUser =='fr') {          
     
                 include_once('langs/fr-lang.php');
     
          } else if ($vl->langMailUser =='en') {      
     
                  include_once('langs/en-lang.php');
     
          } else {                       
     
                   include_once('langs/it-lang.php');
           }
     
           print TXT_TITRE_A;
     
    }
    Dans les fichiers 'langs/fr-lang.php,langs/en-lang.php et 'langs/it-lang.php

    je définie la constante pour les trois langues :
    FR :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!defined('TXT_TITRE_A')) define('TXT_TITRE_A', 'blabla');
    EN :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!defined('TXT_TITRE_A')) define('TXT_TITRE_A', 'blibli');
    IT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!defined('TXT_TITRE_A')) define('TXT_TITRE_A', 'blublu');
    mais ça maffiche toujour blabla alors que $vl->langMailUser returne bien les 3 langues

    jai trouvé ça qui permet de redefinir une constante http://www.php.net/manual/en/functio...t-redefine.php mais ça marche pas

    merci d'avance pour votre aide

  2. #2
    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,

    c'est une voie sans issue que de chercher à redéfinir une constante.
    Il est préférable de se pencher sur son architecture que sur la cuisine que permet de faire la librairie runkit.

    Dans ton cas et d'après tes explications, tu ne la redéfinies pas, tu la définies.
    Pose un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print_r($vl->langMailUser);
    et vérifie bien que tu récupères bien la valeur souhaitée.

  3. #3
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print_r($vl->langMailUser);
    n'affiche pas un tableau mais affiche la langue choisi par les membres c'est a dire fr, en ou it et jai bien ces valeurs avec mais j'arrive pas afficher la constante en fonction de la langue

  4. #4
    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
    ok,

    ne reste plus qu'à tester ceci dans tes fichiers de langues
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ( ! defined('TXT_TITRE_A')) 
        define('TXT_TITRE_A', 'blabla');
    else
        echo 'déjà définie';

  5. #5
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut
    pour la première langue FR

    ça affiche la constante dans cette langue ie "blabla"

    pour les autres langues ça afficher
    déjà définie blabla

    fr blabla
    it déjà définie blabla
    en déjà définie blabla
    fr déjà définie blabla

    Donc la constante est déjà défini pour la première paramètre et ne pourra plus etre mis à jour :/

  6. #6
    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
    oui, c'est ce qui me semblait vu que tu es dans un foreach. C'est ton architecture qui est à revoir (les constantes ne sont pas des plus pratiques pour gérer l'internationalisation).
    Explique un peu comment tu gères l'internationalisation.
    Tu mélanges les langues dans tes interfaces ?

  7. #7
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut
    c'est un système d'envoi de mail au membre d'un site

    le mail est en trois langues en, fr et it

    en fonction de l'option choisi par l'utilisateur (langue du mail $vl->langMailUser) je construit le contenu du mail à envoyer à un user à la langue choisi par cet user c'est la raison du boucle foreach

    j'ai pensé que s’était plus propre de gérer ça avec les constantes or ce n'est pas le cas

    Je pense les gérer avec des variables quelques choses du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $txt_titre_a = "";
     switch($vl->langMailUser)
            {
                     case('fr') :
                         $txt_titre_a = 'blabla';
                         break;
                    case('en') :
                         $txt_titre_a = 'blibli';
                         break;
                    case('it') :
                         $txt_titre_a = 'blublu';
                         break;
            }
    je ne sais pas si c'est plus esthétique de faire comme ça

  8. #8
    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,

    ce n'est pas une question d'esthétique, tu n'as pas trop le choix à vrai dire, à moins de revoir complètement ton système d'internationalisation et de basculer sur un standard comme TMX ou XLIFF

  9. #9
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut
    Bonsoir rawsrc ,

    Merci bien pour tes conseils

    j'ai opté la solution sur l'utilisation de variable au lieu des constantes et ça semble bien marché

    En fait pour ma système d'internationalisation je suis Drupal qui gère bien l'internationalisation mais cette fonctionnalité est spécifique et ne pourra pas être gérer par l’internationalisation de drupal c'est la raison de implémentation de cette nouvelle système d'internationalisation

    mais en tous cas , ça marche

    encore merci


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

Discussions similaires

  1. [Debutant]Definition d'une constante.
    Par GETah dans le forum Langage
    Réponses: 6
    Dernier message: 18/05/2005, 19h16
  2. Inclusion de fichiers et portée d'une constante
    Par Djakisback dans le forum C
    Réponses: 14
    Dernier message: 13/05/2005, 13h19
  3. [Debutant] Redefinir une méthode
    Par joquetino dans le forum Langage
    Réponses: 7
    Dernier message: 29/09/2004, 10h07
  4. ajout d'une constante dans un select
    Par Shabata dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/07/2004, 18h24
  5. Partage d'une constante entre 2 fichiers en C
    Par elsargento dans le forum C
    Réponses: 6
    Dernier message: 29/09/2003, 22h17

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