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 ?
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 ?
Il faut utiliser, non pas HEREDOC mais, NOWDOC.
Manuel : https://www.php.net/manual/fr/langua....syntax.nowdoc
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.
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.
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)
On envoie/affiche précisément :
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;
Alors que si on fait :SELECT ALL mes_colonnes FROM ma_table WHERE ma_colonne = 123
On envoie/affiche :
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}";
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)SELECT ALL mes_colonnes FROM ma_table WHERE ma_colonne = 123
Je n'utilise pas le NOWDOC.
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)
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;
Partager