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 :

[Cookies] Équivalent des "macros" du C


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 47
    Points : 14
    Points
    14
    Par défaut [Cookies] Équivalent des "macros" du C
    En C une macro est un texte (partie de code) qui en remplace un autre (plus long, plus complexe...)
    Par exemple je peut faire une macro qui remplace "if" par "si" et écrire le code suivant, qui fonctionne:

    si (a > b) {... } ;

    Mon problème est que j'ai un script PHP (fonction gestionnaire de cookie) que je voudrais pouvoir utiliser dans plusieurs sites différents. Et le nom du cookie est une varable PHP $cookie, qui est écrite un grand nombre de fois dans la fonction. Mais qui est différent pour chaque site... J'aimerais donc pouvoir le définir en une seule fois, à l'aide d'une macro, qui remplacerait $cookie par $nomDuCookiePourLeSite.


    Attention que en PHP il existe des fonctions appelées macros, mais apparemment ce n'est pas la même chose que en C.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 199
    Points : 116
    Points
    116
    Par défaut
    Il n'y a pas d'équivalent aux #define (et autres commandes préprocesseur) du C en php par contre il y a les très pratiques variables dynamiques avec lesquelles on peut faire pas mal de choses.

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Rien ne vous empêche de faire appel au préprocesseur (commande cpp en général sur tout système Unix) - aux limitations syntaxiques près

    La fonction chercher/remplacer de votre éditeur n'est-elle pas suffisante ? Certains gèrent un remplacement par expression régulière et il reste nos bons vieux outils comme sed. Cela dit si c'est bien une variable qui est utilisée je ne comprends pas pourquoi vouloir la renommer quand on peut en changer la valeur

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 47
    Points : 14
    Points
    14
    Par défaut
    Merci de vos réponses, cela me fait des pistes de recherche.

    Julp, dans ce cas précis, créer un cookie, PHP crée une variable qui a le même nom, pour pouvoir manipuler ce cookie. Le problème alors est que différent sites ne peuvent pas utiliser le même cookie, les résultats pourraient être assez serendipiteux (ou piteux tout court).
    Egalement utiliser l'éditeur pour remplacer les noms peut parfois casser le code, en oubliant certains mots à remplacer, ou en remplaçant là où il ne faut pas dans une autre partie du code. Cherchez le bug, après...

  5. #5
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 354
    Points : 15 700
    Points
    15 700
    Par défaut
    tu peux mettre le nom dans un fichier de configuration et ensuite tu utilises partout cette valeur de configuration
    ensuite si tu veux changer ce nom, tu as juste un endroit à modifier

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par Richard Trigaux
    Julp, dans ce cas précis, créer un cookie, PHP crée une variable qui a le même nom, pour pouvoir manipuler ce cookie. Le problème alors est que différent sites ne peuvent pas utiliser le même cookie, les résultats pourraient être assez serendipiteux (ou piteux tout court).
    Ok, je vois mieux, c'était mal illustré plus haut

    Citation Envoyé par Richard Trigaux
    Egalement utiliser l'éditeur pour remplacer les noms peut parfois casser le code, en oubliant certains mots à remplacer, ou en remplaçant là où il ne faut pas dans une autre partie du code. Cherchez le bug, après...
    Lors de la conception n'est-il pas possible de paramétrer cela par une variable ? Si cela est trop tard, j'ai bien peur que quelque soit la solution aucune ne vous permette de ne pas toucher aux sources. Je peux vous suggérer de faire l'essai d'un remplacement et si votre serveur est convenablement configuré vous devriez assez vite savoir si des variables sont indéfinies (et où).

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 47
    Points : 14
    Points
    14
    Par défaut
    Je cloture cette vieille discussion: comme l'indique Julp, on peut effectivement passer le nom du cookie comme variable, cette variable étant définie une fois pour toutes dans un fichier de configuration. C'est ce que j'ai fait, et cela marche très bien, pourvu qu'on n'oublie pas de passer la variable dans la fonction qui va créer le cookie...
    je marque donc résolu

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

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