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 :

Insérer une variable dans HEREDOC


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Points : 63
    Points
    63
    Par défaut Insérer une variable dans HEREDOC
    Bonjour
    J'ai un echo <<< (heredoc).
    Le problème c'est que dedans il y a une variable que je ne veux pas qu'il exécute, je veux juste qu'il l'affiche comme ça sans l'exécuter
    Comment faire ?

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 197
    Points : 8 417
    Points
    8 417
    Billets dans le blog
    17
    Par défaut
    Il faut utiliser, non pas HEREDOC mais, NOWDOC.

    Manuel : https://www.php.net/manual/fr/langua....syntax.nowdoc
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 783
    Points : 3 036
    Points
    3 036
    Par défaut
    Cela ne fera en rien avancer la discussion mais je trouve ces syntaxes affreuses. Cela casse la mise en page du code php, cela pollue le code,...

    Pourquoi ne pas stocker ce texte dans un fichier texte puis le lire ?

    C'est du texte et non du code, cela ne devrait pas venir "polluer" le code selon moi.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 197
    Points : 8 417
    Points
    8 417
    Billets dans le blog
    17
    Par défaut
    Je pensais la même chose que toi cavo lorsque, dans ses premières versions, le HERE/NOWDOC imposait un marqueur de fin en début de ligne.

    Je l'utilise systématiquement dès qu'une chaîne est sur plusieurs lignes. Cela permet d'obtenir quelque chose de très propre à mon goût.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 783
    Points : 3 036
    Points
    3 036
    Par défaut
    Bonjour Séb

    Aurais-tu un lien vers un code source qui pourrait illustrer cela histoire que je ne reste pas sur une mauvaise première impression ;-)

    Et quel est l'usage que tu fais des HEREDOC / NOWDOC ? Je le vois de temps à autre, en Linux Bash, pour l'écran d'aide mais je n'accroche vraiment pas. Même si c'est plus long, je préfère d'écrire "echo" tant et plus (et avec les éditeurs modernes tels vscode et la notion de multi-curseurs; ce n'est vraiment pas très fastidieux)
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  6. #6
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 197
    Points : 8 417
    Points
    8 417
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = <<<SQL
        SELECT ALL mes_colonnes
        FROM ma_table
        WHERE ma_colonne = {$une_valeur}
        SQL;
    On envoie/affiche précisément :

    SELECT ALL mes_colonnes
    FROM ma_table
    WHERE ma_colonne = 123
    Alors que si on fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "SELECT ALL mes_colonnes
            FROM ma_table
            WHERE ma_colonne = {$une_valeur}";
    On envoie/affiche :

    SELECT ALL mes_colonnes
            FROM ma_table
            WHERE ma_colonne = 123
    Et comme je travaille beaucoup sur le terminal et sur des logs, mon choix va naturellement vers la solution qui permet un bon formatage sans dégrader la lisibilité du script (au contraire même)

    Je n'utilise pas le NOWDOC.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  7. #7
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 783
    Points : 3 036
    Points
    3 036
    Par défaut
    Merci pour l'illustration. Perso, je continuerai à privilégier une syntaxe telle que $sql="SELECT ALL mes_colonnes FROM ma_table WHERE ma_colonne = %s" (même si l'instruction SQL est bien plus longue) ou, je l'ai déjà fait sur plusieurs projets, je me crée un folder resources/sql dans lequel je vais mettre des fichiers comme p.ex. resources/sql/getCustomers.sql ; que je lirais depuis une classe PHP avec le code qui va bien (s'assurer que le fichier existe, une petite fonction d'injection de variables, ...). Une autre étape serait l'utilisation d'une dépendance telle que Eloquent.

    C'est vraiment une question de goût : je préfère que mon code contienne le moins de "data" possible et un SQL peut être externalisé et gérer en dehors de mon script qui, du coup, est plus léger et plus ouvert (je peux le réutiliser; il suffit de changer le fichier SQL). Et, jusqu'à aujourd'hui, je n'ai pas encore "perçu" le besoin du HEREDOC.

    (Désolé Isa pour avoir dévié de ta question initiale)
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  8. #8
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 888
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 888
    Points : 6 632
    Points
    6 632
    Par défaut
    Si le but est de "neutraliser" une ou plusieurs variables et pas les autres, c'est simple, une chaîne heredoc se comporte exactement comme une chaîne entre double quote, donc il suffit d'échapper le dollar:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $change = 'chandelle';
     
    $str = <<<SONNET
    Quand vous serez bien vieille, au soir, à la $change,
    Assise auprès du feu, dévidant et \$filant,
    SONNET;
     
    echo $str;
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

Discussions similaires

  1. Problème variable et objet
    Par Hacken dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/09/2005, 14h10
  2. [javascript] Problème variable globale !!!!
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 08/08/2005, 16h41
  3. [Rave report 5.1.3][delphi 7] Probléme variable PIVar
    Par GILLESKLEIN dans le forum Rave
    Réponses: 2
    Dernier message: 05/02/2005, 15h27
  4. [LG]Problême Variable dynamique de types différents
    Par pierrOPSG dans le forum Langage
    Réponses: 2
    Dernier message: 29/04/2004, 16h01
  5. problème variable extern
    Par HeKaz dans le forum C
    Réponses: 14
    Dernier message: 08/01/2003, 01h44

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