Je n'ai jamais vu quelque chose comme ça avant. Donc, ça me confondre depuis un moment. Mais maintenant je comprends et l'utilise parfois. Ainsi, après une brève expérience, quelqu'un peut-il me dire quel est le pro et les inconvénients utilisant la notation Heredoc dans votre PHP?
$stringval = <<<MYHEREDOC just creating variable here. nothing more. MYHEREDOC;
8 Réponses :
Il y a maintenant deux types d'hérédoc: "
"" code> convertira toutes les variables en leur valeur sur la création. Ceci est très utile pour mettre des espaces / retours exacts où vous en avez besoin (pas besoin de \ n ou \ t). Li>
- Nowdoc strong>, similaire à des marques simples
'' code> sera non strong> convertir toutes les variables et stocke uniquement la valeur du texte. Cela peut être utilisé dans les valeurs par défaut des variables de classe (contrairement à Heredoc). Li>
ul> Heredoc Exemple: p> xxx pré> EXEMPLE NOWDOC: p>
function foo() {
if ($bar) {
$string = <<<LINE
Hey, how is it going, $name.
This is a great test of Heredoc and Nowdoc.
Blah blah blah, go upvote me!
LINE;
}
}
@st. John Johnson, merci beaucoup de la réponse et de l'explication. C'est tellement détaillé. Mais à propos de la vérité, je préfère le mode de codage @cletus. Ce n'est qu'une question de préférence.
Eh bien, le (s) pro (s) est p>
et le contre p>
Personnellement, je ne l'utilise pas. P>
(une responsabilité obligatoire de tout cela étant une question de préférence, etc., etc.) p>
Alors, qu'est-ce que vous utilisez dans le remplacement de Heredoc code> donné si vous avez de gros morceaux de chaîne? Je suis curieux. Seule une chose que je pouvais penser si sont les suivants: tampon de sortie,
echo code> avec devis s'échappant,
sprintf code>. Quelque chose d'autre qui me manque?
Je ne l'utilise pas du tout. C'était assez utile pour Perl, comme Perl n'avait aucune fonctionnalité d'évasion HTML. Donc, PHP fait, et si je veux imprimer une grande quantité de texte, je ferais simplement fermer la balise PHP et le type de texte tel quel. Dans n'importe quel autre cas, les bonnes citations doubles me conviennent bien. P>
99% du temps que je l'utilise, c'est pour les requêtes SQL, par exemple: Je trouve plus facile de repérer de telles requêtes dans le code source et de les copier et de les coller dans quelque chose à courir eux. Votre kilométrage peut varier. Le plus grand "pro" en ce qui me concerne est que vous n'avez pas besoin d'échapper à des citations. C'est particulièrement un problème avec Markup. Décidez de vous-même qui est plus facile à lire. En supposant: p> version 1: guillemets simples h3>
version 2: Double citations h3>
Version 3: HEREDEDOC H3>
$html = <<<END
<input type="$type" name="$name" value="$value">
END;
En réponse à votre note sur la version 2, vous avez raison mais vous deviendriez une syntaxe XHTML incorrecte. :RÉ
XML permet des guillemets simples pour les attributs, donc XHTML fait également.
Heredocs sont très utiles pour déversser de gros blobs de texte dans une variable ou directement sur le client. Il vous permet également de vous enregistrer plusieurs concatenations si vous construisez une longue chaîne multiligne. Le seul inconvénient principal est que vous devez pré-traiter toutes les données que vous insérerez.
echo '<input type ... snip ... value="' . htmlspecialchars($bar) . etc....
Il est très utile d'avoir un style de programmation très soigné séparer HTML avec PHP. Vos codes PHP seront très lisibles et plus faciles à comprendre. Il facilite considérablement les codes de débutation. Il vous permet de vous concentrer davantage sur la logique du programme plutôt que de la présentation avec HTML. Vous avez juste besoin d'une instruction ECHO plutôt que des scripts PHP gênants dans votre HTML. Pour illustrer comment il est utilisé, voici un exemple.
MasterPage.php p> méritbadges.php p> toutes les autres pages peuvent être créées de la même manière avec le ci-dessus exemple. N'oubliez pas que vous venez de créer une grosse chaîne pour votre sortie et de l'afficher dans votre fichier HMTL avec un seul écho!
Il suffit d'analyser les codes ci-dessus et de voir comment améliorer votre programmation PHP avec Heredoc! P> P>
Est-ce une mauvaise façon de coder ou de bon moyen? P> blockQuote>
Vous voulez dire,
est-ce une bonne pratique ou est-ce une mauvaise pratique? strong> p> Généralement, il n'y a rien de mal à l'utiliser. J'irais aussi loin pour dire qu'il y a quelque chose qui ne va pas avec
pas fort> en utilisant: p>
- Vous n'avez pas à échapper à des citations simples et doubles li>
- vous permet d'ajouter à une variable précédente tout en définissant un "contexte" li>
- permet un marquillage non-php tout droit (tel que JavaScript) à utiliser à côté de PHP; rend le code non-php notable li>
- Aucune différence notable de la performance [*]. Malgré tout, c'est trivial. Li> ol>
Bien sûr, il n'y a rien de mal avec
$ var = "Bienvenue, $ utilisateur b>;" code> - Cependant, ce n'est pas idéal si vous avez l'intention de travailler avec grandes quantités EM> du code étranger et em> souhaite maintenir la lisibilité: p>
Vraiment, c'est un moyen idéal de faire face à la balise telle que HTML si vous ne pouvez pas la sortir directement. P>
[*] basé sur des tests personnels, mais devrait rester vrai, peu importe. i> p>
tandis qu'il est acceptable d'utiliser Heredoc, l'inconvénient majeur à mon avis est que la plupart des IDE perdent la possibilité de suivre le code et d'afficher souvent des messages dans lesquels des balises de fermeture ne peuvent pas être trouvées - en particulier si une étiquette d'ouverture à l'intérieur d'un autre hérdoc à La balise finale ou le code est un mélange de tous les styles. Une des applications que j'ai héritées était partout. Par exemple.
echo <<<PART1 <table> <tr> .... </tr> PART1; //more php code ?> </table>
@Otto Allmendeur: Et qu'est-ce qui ne va pas avec ça?
@Otto allmendeur: vraiment? J'ai eu ceci à partir d'un livre PHP. Juste comme la réponse de St. Johnson ci-dessous. mais thak vous, votre lien est une bonne référence
Ne t'inquiète pas. Votre exemple est correct. PHP utilise simplement trois
<< / code> pendant que la plupart des langues utilisent seulement deux.
@rest mon mauvais - confondu avec quelque chose d'autre