Simple quotes, double quotes, ou pas du tout ?

Simple quotes, double quotes, ou pas du tout ? - PHP - Programmation

Marsh Posté le 05-11-2007 à 22:08:33    

Hello,  
 
Je voudrai savoir quelle différence il y a entre des simples, doubles ou pas de quotes du tout.
 
Par exemple
 

Code :
  1. $_POST[test];
  2. $_POST['test'];
  3. $_POST["test"];


 
Les 3 fonctionnent mais lequel est le mieux ?

Reply

Marsh Posté le 05-11-2007 à 22:08:33   

Reply

Marsh Posté le 05-11-2007 à 22:10:44    

la solution 2 ou la 3 , pas la 1

Reply

Marsh Posté le 06-11-2007 à 10:18:06    

La différence est la suivante : avec les double-quotes, les variables sont interprétées :

Code :
  1. $x = 'pouet';
  2.  
  3. echo 'x vaut $x';
  4. echo "x vaut $x";


Ca va afficher :

Code :
  1. x vaut $x
  2. x vaut pouet


Reply

Marsh Posté le 06-11-2007 à 10:18:35    

Par contre :

Code :
  1. $_POST[test];


 
Ne doit surtout jamais être utilisé, à moins que test ne soit une constante

Reply

Marsh Posté le 06-11-2007 à 10:27:02    

Moi j'aime mieux les simple quotes, je crois que c'est supposément plus rapide que les double quotes ? Le fait d'ouvrir / fermer l'interpréteur toutle temps n'est pas un soucis ?

Reply

Marsh Posté le 06-11-2007 à 10:28:06    

Ouais, c'est légèrement plus lent avec les double-quotes, c'est sûr, mais pas de très beaucoup.

Reply

Marsh Posté le 06-11-2007 à 10:28:16    

startide a écrit :

Moi j'aime mieux les simple quotes, je crois que c'est supposément plus rapide que les double quotes ? Le fait d'ouvrir / fermer l'interpréteur toutle temps n'est pas un soucis ?


Micro-optimisation, intérêt douteux, privilégier la lisibilité.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 06-11-2007 à 10:29:34    

C'est bien ce que je croyais avoir compris ;) Merci de ta réponse ^^
 
sircam > oui naturellement, mais moi je lis mieux avec les simple quotes en fait, c'est l'habitude je suppose. en même temps je suis un bricoleur amateur, je fais pas du php à haut niveau loin de là ^^

Message cité 1 fois
Message édité par startide le 06-11-2007 à 10:30:24
Reply

Marsh Posté le 06-11-2007 à 10:39:05    

startide a écrit :

je suis un bricoleur amateur, je fais pas du php à haut niveau loin de là ^^


Le PHP, c'est par définition du bricolage.

Spoiler :

troll du vendredi spotted [:dawa]



---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 06-11-2007 à 10:42:21    

Rotfl, je vais aller linker ca sur clubic histoire de rameuter dalai lama et kisscool avec les crucifix :P

Reply

Marsh Posté le 06-11-2007 à 10:42:21   

Reply

Marsh Posté le 06-11-2007 à 10:42:46    

Sircam> Moi perso, je trouve  

Code :
  1. echo 'Coucou '.$toi.' !';


bien plus lisible que  

Code :
  1. echo "Coucou $toi !";


 
Avec les doubles quotes, les variables sont noyées dans la chaine de caractère et donc moins visible qu'avec des simples quotes.

Message cité 2 fois
Message édité par kao98 le 06-11-2007 à 10:43:40

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 06-11-2007 à 10:44:33    

Ca dépend du logiciel que t'as pour coloriser, si c'est bloc note c'est clair que... :D

Reply

Marsh Posté le 06-11-2007 à 10:55:12    

kao98 a écrit :

Sircam> Moi perso, je trouve  

Code :
  1. echo 'Coucou '.$toi.' !';



Pour ça, on utilisera carrément les virgules :

Code :
  1. echo 'Coucou', $toi, ' !';


Pas besoin de concaténation pour echo :)

Reply

Marsh Posté le 06-11-2007 à 10:55:33    

Je pense surtout que :
 

Code :
  1. echo 'Coucou '.$toi.' !';


 
Est plus lent que :
 

Code :
  1. echo "Coucou $toi !";


 
En effet, le premier nécessite à PHP de créer 3 chaînes de caractères en mémoire, puis les concaténer.
Tandis que le second n'utilise qu'une seule instance de chaîne de caractères.
 
Bon, après ça dépend des optimisations qui sont faites dans le moteur PHP, mais d'un point de vue sémantique, pour ce cas, l'utilisation des " me semble plus performante.

Message cité 3 fois
Message édité par MagicBuzz le 06-11-2007 à 10:55:53
Reply

Marsh Posté le 06-11-2007 à 10:57:57    

MagicBuzz > intéressant ca, comme je disais suis un amateur donc je sais pas quelles mécaniques entrent en jeu derrière quand ca passe dans les mains de l'interpréteur... la virgule mentionnée par florent permet-elle de contourner cette limite ?

Reply

Marsh Posté le 06-11-2007 à 10:59:00    

MagicBuzz a écrit :

En effet, le premier nécessite à PHP de créer 3 chaînes de caractères en mémoire, puis les concaténer.
Tandis que le second n'utilise qu'une seule instance de chaîne de caractères.


Malheureusement nan. Lors du parsing, la chaîne :

Code :
  1. 'Coucou $toi !'


 
Est transformée en :

Code :
  1. INIT STRING  ~0
  2. ADD_STRING   ~0 ~0 'Coucou'
  3. ADD_STRING   ~0 ~0 ' '
  4. ADD_VAR      ~0 ~0 !0
  5. ADD_STRING   ~0 ~0 ' '
  6. ADD_STRING   ~0 ~0 '!'
  7. ECHO            ~0


 
cf. How long is a piece of string?

Reply

Marsh Posté le 06-11-2007 à 11:00:12    

Je pense qu'elle a le même effet effectivement (mise à part que tu gère toujours 3 chaînes en mémoire, mais effectivement tu ne fais plus de concaténation)

Reply

Marsh Posté le 06-11-2007 à 11:02:05    

FlorentG a écrit :


Malheureusement nan. Lors du parsing, la chaîne :
[...]
cf. How long is a piece of string?


Ouais, comme je disais, ça dépend des optimisations du moteur :sweat:
 
Bon ben donc j'ai rien dit.
 
(m'enfin bon, php c'est tout pourri alors :o)
 
Moi je préfère la syntaxe barbare de C# (dérivée du printf, mais non typée) :
 

Code :
  1. String.Format("Coucou {0} !", toi);

Reply

Marsh Posté le 06-11-2007 à 11:28:46    

Ha ha ha, le super débat du vendredi est lancé.
 
[:aline2003]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 06-11-2007 à 11:33:52    

Vouais sauf qu'on est que mardi quoi :P

Reply

Marsh Posté le 06-11-2007 à 11:42:20    

Ouais mais "Le mardi c'est permi" [:magicbuzz]
http://fr.answers.yahoo.com/questi [...] 734AAjsSs0

Reply

Marsh Posté le 06-11-2007 à 12:33:31    

Un benchmark a été fait, je ne sais pas ce qu'il vaut.
 
http://www.blueshoes.org/en/developer/php_bench/

Reply

Marsh Posté le 06-11-2007 à 13:13:48    

Arrêtez à présent! C'est insupportable! [:mlc]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 06-11-2007 à 13:43:25    

cinezone a écrit :

Un benchmark a été fait, je ne sais pas ce qu'il vaut.
 
http://www.blueshoes.org/en/developer/php_bench/


Laisse tomber ces conneries... Utilise xdebug (xdebug.org), et profile ton application. Et regarde ce qui rame le plus, et essaye de l'optimiser. Ca sert à rien de remplacer tous les while chelous par des foreach...

Reply

Marsh Posté le 06-11-2007 à 13:46:38    

Je trouve que ces optimisation sont futile.
 
Combien de temps gagne t'on sur l'execution d'une page ?
 
0.001% du temps d'execution ?
 
Personnellement j'adopte la méthode qui je trouve est la plus lisible et qui permet a quelqu'un de reprendre facilement mon code sans y etre perdu. C'est a dire que je fait toujours des 'chaine'.$var.'chaine' ou des "chaine".$var."chaine" (en effet j'aime bien reservé les ' pour mon code HTML)
 
Perso je pense qu'il ne faut pas faire n'importe quoi, faire attention a ne pas faire de solution de porc, mais je privilegie toujours la méthode la plus propre visuellement, celle qui me fera le moins faire d'erreurs.

Message cité 1 fois
Message édité par TheGuit le 06-11-2007 à 13:48:59

---------------
www.crystalxp.net | www.livepicture.fr
Reply

Marsh Posté le 06-11-2007 à 13:52:33    

'nuff said :jap;

Reply

Marsh Posté le 06-11-2007 à 14:43:03    

FlorentG a écrit :


Laisse tomber ces conneries... Utilise xdebug (xdebug.org), et profile ton application. Et regarde ce qui rame le plus, et essaye de l'optimiser. Ca sert à rien de remplacer tous les while chelous par des foreach...

D'autant plus que le foreach peut se révéler beaucoup plus lent vu qu'il copie les éléments du tableau avant de les fournir.
Pour des tableaux qui contiennent des nombres ça va encore mais si le tableau contient des éléments volumineux (d'autres tableaux par exemple) ça peut tourner à la cata.

Reply

Marsh Posté le 06-11-2007 à 15:03:27    

TheGuit > Euh... T'aime pas faire n'importe quoi mais... "réserver les ' pour le HTML" c'est du total n'importe quoi :o Puisque le ' en HTML n'existe pas, il faut obligatoirement utiliser " :o Pour le reste je suis d'accord. Entre garder 1ms sur tous les traîtements d'une journée et perdre 6 heures pour résoudre un bug bloquant, ou avoir un code insensiblement plus lent mais maintenable et sans surprise... y'a pas à tortiller, je choisi la seconde méthode !

Reply

Marsh Posté le 06-11-2007 à 15:22:54    

omega2 a écrit :

D'autant plus que le foreach peut se révéler beaucoup plus lent vu qu'il copie les éléments du tableau avant de les fournir.


Non

Reply

Marsh Posté le 06-11-2007 à 15:32:53    

Non quoi? Avec un foreach, tu ne bosses pas sur le tableau indiqué dans le foreach, c'est un fait. D'ailleurs, une fois dans la boucle du foreach, tu peux supprimer la moitié des éléments du tableau sans que ça dérange : le foreach te les donneras quand même. Ca montre bien que tout est copié avec cette instruction là.
Si tu ne me crois pas, fait l'essai.

Reply

Marsh Posté le 06-11-2007 à 15:37:57    

y'a pas à tortiller, php c'est pourri

Reply

Marsh Posté le 06-11-2007 à 15:39:20    

Feels like Friday. [:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 06-11-2007 à 15:47:19    

kao98 a écrit :

Sircam> Moi perso, je trouve

Code :
  1. echo 'Coucou '.$toi.' !';


bien plus lisible que

Code :
  1. echo "Coucou $toi !";
 

Avec les doubles quotes, les variables sont noyées dans la chaine de caractère et donc moins visible qu'avec des simples quotes.


Trouve toi un vrai éditeur de texte, le tiens est une merde :o

MagicBuzz a écrit :

Je pense surtout que :

 
Code :
  1. echo 'Coucou '.$toi.' !';
 

Est plus lent que :

 
Code :
  1. echo "Coucou $toi !";
 

En effet, le premier nécessite à PHP de créer 3 chaînes de caractères en mémoire, puis les concaténer.
Tandis que le second n'utilise qu'une seule instance de chaîne de caractères.

 

Bon, après ça dépend des optimisations qui sont faites dans le moteur PHP, mais d'un point de vue sémantique, pour ce cas, l'utilisation des " me semble plus performante.


perdu

TheGuit a écrit :

Je trouve que ces optimisation sont futile.

 

Combien de temps gagne t'on sur l'execution d'une page ?

 

0.001% du temps d'execution ?

 

Personnellement j'adopte la méthode qui je trouve est la plus lisible et qui permet a quelqu'un de reprendre facilement mon code sans y etre perdu. C'est a dire que je fait toujours des 'chaine'.$var.'chaine' ou des "chaine".$var."chaine" (en effet j'aime bien reservé les ' pour mon code HTML)

 

Perso je pense qu'il ne faut pas faire n'importe quoi, faire attention a ne pas faire de solution de porc, mais je privilegie toujours la méthode la plus propre visuellement, celle qui me fera le moins faire d'erreurs.


 :jap:

MagicBuzz a écrit :

le ' en HTML n'existe pas, il faut obligatoirement utiliser " :o


Source?

 

edit: non, en fait on va faire plus simple, c'est pas comme si t'avais pas l'habitude: c'est du grand n'importe quoi.

Citation :

Attributes

 

Start tags may contain attribute specifications. An attribute specification consists of a name, an "=" and a value specification. The name refers to an item in an ATTLIST declaration.

 

The value can be a name token or an attribute value literal. A name token is one or more name characters. An attribute value literal is a string delimited by double-quotes (" ) or a string delimited by single-quotes ('). Interpretation of attribute value literals is covered in the discussion of the lexical analyzer API.


http://www.w3.org/MarkUp/SGML/sgml-lex/sgml-lex

Message cité 2 fois
Message édité par masklinn le 06-11-2007 à 15:52:33

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-11-2007 à 15:49:36    

masklinn a écrit :


Trouve toi un vrai éditeur de texte, le tiens est une merde :o


Y'a pas de problème avec mon éditeur ! Mais il n'y a pas que mon éditeur dans la vie ! Par exemple, les balises [ code] du forum ! :o


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 06-11-2007 à 15:52:43    

Les balises [ code] du forum sont "php compliant"? Je pensais qu'elles parsaient tout comme si c'était du C ou du C++.

Reply

Marsh Posté le 06-11-2007 à 15:53:52    

omega2 a écrit :

Les balises [ code] du forum sont "php compliant"? Je pensais qu'elles parsaient tout comme si c'était du C ou du C++.


Non, suffit d'écrire [ code=php] et là

Code :
  1. <?php
  2.    class FooClass {
  3.        }
  4.    $foo = new FooClass();
  5.    $foo->bar = "pouet";
  6.    $truc = "bar";
  7.    $pouet = "tr";
  8.    $machin = "uc";
  9.    
  10.    function tr($totoz){
  11.     global $pouet, $machin, $truc;
  12.     return ${$pouet.$machin}.$totoz;
  13.    }
  14.    
  15.    echo ${($foo->${${$foo->bar}.((${pouet}.${machin}===$pouet.${machin})?${machin}:${$pouet.$machin})})}(($foo->${${$foo->bar}.((${pouet}.${machin}===$pouet.${machin})?${machin}:${$pouet.$machin})}));
  16. ?>


(tu remarqueras que global et echo ont un lien vers la doc PHP, et que "function" est en gras alors que c'est pas un keyword C ou C++)

Message cité 1 fois
Message édité par masklinn le 06-11-2007 à 15:55:17

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-11-2007 à 16:06:23    

masklinn a écrit :


Source?
 
edit: non, en fait on va faire plus simple, c'est pas comme si t'avais pas l'habitude: c'est du grand n'importe quoi.

Citation :

Attributes
 
Start tags may contain attribute specifications. An attribute specification consists of a name, an "=" and a value specification. The name refers to an item in an ATTLIST declaration.
 
The value can be a name token or an attribute value literal. A name token is one or more name characters. An attribute value literal is a string delimited by double-quotes (" ) or a string delimited by single-quotes ('). Interpretation of attribute value literals is covered in the discussion of the lexical analyzer API.


http://www.w3.org/MarkUp/SGML/sgml-lex/sgml-lex


ouais enfin si en fin 2007 "html" pour toi c'est toujours html4, y'a un souci.
je doute fortement que TheGuit, quand il prononce le mot "html" fasse référence à autrechose qu'à du xhtml... et si c'est le cas, le caractères ' est interdit pour les attributs, point barre.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed