308 votes

PHP - concaténer ou insérer directement des variables dans une chaîne

Je me demande, quelle est la bonne façon d'insérer des variables PHP dans une chaîne?

Par ici:

 echo "Welcome ".$name."!"
 

Ou de cette façon:

 echo "Welcome $name!"
 

Ces deux méthodes fonctionnent dans mes PHP v5.3.5 . Ce dernier est plus court et plus simple, mais je ne suis pas sûr si le premier format est meilleur ou accepté comme plus approprié.

457voto

Pascal MARTIN Points 195780

Entre ces deux syntaxes, vous devriez vraiment choisir celui que vous préférez :-)

Personnellement, je aller avec votre deuxième solution dans un tel cas (interpolation de Variable), que je trouve plus facile à écrire et à lire.

Le résultat sera le même; et même si il y a des implications sur les performances, ceux qui n'a pas d'importance 1.


Au passage, donc, ma réponse est un peu plus complète: le jour où vous aurez envie de faire quelque chose comme ceci:

echo "Welcome $names!";

PHP va interpréter votre code comme si vous étiez en train d'utiliser l' $names variable -- qui n'existe pas.

De ce jour, vous aurez besoin d'utiliser {}:

echo "Welcome {$name}s!"

Pas besoin de secours pour les concaténations.


Notez également que votre première syntaxe:

echo "Welcome ".$name."!";

Il pourrait sans doute être optimisé, en évitant les précédents, à l'aide de:

echo "Welcome ", $name, "!";

(Mais, comme je l'ai dit plus tôt, cela n'importe pas beaucoup...)


1 - Sauf si vous faites de centaines de milliers de concaténations vs interpolations -- et ce n'est probablement pas tout à fait le cas.

27voto

Michael Points 9231

Les chaînes entre guillemets sont plus élégantes, car vous n'avez pas besoin de les séparer à chaque fois que vous devez insérer une variable (comme vous devez le faire avec des chaînes entre guillemets simples).

Toutefois, si vous devez insérer la valeur de retour d'une fonction, vous ne pouvez pas l'insérer dans une chaîne entre guillemets, même si vous l'entourez d'accolades!

 //syntax error!!
//$s = "Hello {trim($world)}!"

//the only option
$s = "Hello " . trim($world) . "!";
 

6voto

Frosty Z Points 8935

Du point de vue de la prise de pense simple, lisible, cohérente et facile à comprendre (car la performance n'a pas d'importance ici):

  • L'aide d'embedded vars dans les guillemets peuvent conduire à des complexes et des situations confuses lorsque vous souhaitez incorporer les propriétés de l'objet, multidimentional tableaux etc. C'est, en général lors de la lecture intégré vars, vous ne pouvez pas être instantanément 100% sûr de la finale comportement de ce que vous lisez.

  • Vous avez souvent besoin d'ajouter des béquilles comme {} et \, ce qui OMI ajoute de la confusion et permet la concaténation de la lisibilité à peu près équivalent, si ce n'est mieux.

  • Dès que vous avez besoin pour l'envelopper d'un appel de fonction autour du var, par exemple htmlspecialchars($var), vous devez passer à la concaténation.

  • Autant que je sache, vous ne pouvez pas incorporer des constantes.

Dans certains cas spécifiques, des "guillemets avec des revendeurs intégration" peut être utile, mais d'une manière générale, je voudrais aller de concaténation (à l'aide de guillemets simples ou doubles lors de la pratique)

5voto

Manos Dilaverakis Points 4035

L'un ou l'autre va bien. Utilisez celui qui a une meilleure visibilité pour vous. Et en parlant de visibilité, vous pouvez également consulter printf .

5voto

Denis V Points 868

Je sais que cette question a déjà une réponse choisie, mais j'ai trouvé cet article qui montre clairement que l'interpolation de chaîne fonctionne plus rapidement que la concaténation. Cela pourrait être utile pour ceux qui doutent encore.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X