Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4253 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Simple quotes, double quotes, ou pas du tout ?

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Page Précédente
Auteur Sujet :

Simple quotes, double quotes, ou pas du tout ?

n°1637231
cinezone
Posté le 05-11-2007 à 22:08:33  profilanswer
 

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 ?

mood
Publicité
Posté le 05-11-2007 à 22:08:33  profilanswer
 

n°1637232
flo850
moi je
Posté le 05-11-2007 à 22:10:44  profilanswer
 

la solution 2 ou la 3 , pas la 1

n°1637397
FlorentG
Posté le 06-11-2007 à 10:18:06  profilanswer
 

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


n°1637398
FlorentG
Posté le 06-11-2007 à 10:18:35  profilanswer
 

Par contre :

Code :
  1. $_POST[test];


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

n°1637409
startide
Posté le 06-11-2007 à 10:27:02  profilanswer
 

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 ?

n°1637411
FlorentG
Posté le 06-11-2007 à 10:28:06  profilanswer
 

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

n°1637412
sircam
I Like Trains
Posté le 06-11-2007 à 10:28:16  profilanswer
 

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}
n°1637413
startide
Posté le 06-11-2007 à 10:29:34  profilanswer
 

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
n°1637417
sircam
I Like Trains
Posté le 06-11-2007 à 10:39:05  profilanswer
 

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}
n°1637424
startide
Posté le 06-11-2007 à 10:42:21  profilanswer
 

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

mood
Publicité
Posté le 06-11-2007 à 10:42:21  profilanswer
 

n°1637425
kao98
...
Posté le 06-11-2007 à 10:42:46  profilanswer
 

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
n°1637428
startide
Posté le 06-11-2007 à 10:44:33  profilanswer
 

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

n°1637438
FlorentG
Posté le 06-11-2007 à 10:55:12  profilanswer
 

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 :)

n°1637440
MagicBuzz
Posté le 06-11-2007 à 10:55:33  profilanswer
 

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
n°1637444
startide
Posté le 06-11-2007 à 10:57:57  profilanswer
 

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 ?

n°1637446
FlorentG
Posté le 06-11-2007 à 10:59:00  profilanswer
 

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?

n°1637449
MagicBuzz
Posté le 06-11-2007 à 11:00:12  profilanswer
 

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)

n°1637453
MagicBuzz
Posté le 06-11-2007 à 11:02:05  profilanswer
 

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);

n°1637472
sircam
I Like Trains
Posté le 06-11-2007 à 11:28:46  profilanswer
 

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


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1637477
startide
Posté le 06-11-2007 à 11:33:52  profilanswer
 

Vouais sauf qu'on est que mardi quoi :P

n°1637494
MagicBuzz
Posté le 06-11-2007 à 11:42:20  profilanswer
 

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

n°1637530
cinezone
Posté le 06-11-2007 à 12:33:31  profilanswer
 

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

n°1637555
sircam
I Like Trains
Posté le 06-11-2007 à 13:13:48  profilanswer
 

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


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1637579
FlorentG
Posté le 06-11-2007 à 13:43:25  profilanswer
 

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...

n°1637582
TheGuit
Alcoogeek
Posté le 06-11-2007 à 13:46:38  profilanswer
 

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
n°1637589
FlorentG
Posté le 06-11-2007 à 13:52:33  profilanswer
 

'nuff said :jap;

n°1637650
omega2
Posté le 06-11-2007 à 14:43:03  profilanswer
 

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.

n°1637663
MagicBuzz
Posté le 06-11-2007 à 15:03:27  profilanswer
 

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 !

n°1637673
FlorentG
Posté le 06-11-2007 à 15:22:54  profilanswer
 

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

n°1637677
omega2
Posté le 06-11-2007 à 15:32:53  profilanswer
 

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.

n°1637680
MagicBuzz
Posté le 06-11-2007 à 15:37:57  profilanswer
 

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

n°1637682
sircam
I Like Trains
Posté le 06-11-2007 à 15:39:20  profilanswer
 

Feels like Friday. [:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1637684
masklinn
í dag viðrar vel til loftárása
Posté le 06-11-2007 à 15:47:19  profilanswer
 

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
n°1637686
kao98
...
Posté le 06-11-2007 à 15:49:36  profilanswer
 

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
n°1637688
omega2
Posté le 06-11-2007 à 15:52:43  profilanswer
 

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

n°1637690
masklinn
í dag viðrar vel til loftárása
Posté le 06-11-2007 à 15:53:52  profilanswer
 

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
n°1637701
MagicBuzz
Posté le 06-11-2007 à 16:06:23  profilanswer
 

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.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Simple quotes, double quotes, ou pas du tout ?

 

Sujets relatifs
Programme simple avec VB6Cherche un outil simple d'édition de table
[PROLOG] Petit problème simple de prédicatcréer un .exe simple
[HTML/PHP] Erreur simple dans code, mais introuvableCherche un blog tout simple à intégrer dans un site php
Diaporama tout simple en javascriptDouble vérification dans une boucle if
Threads simple et portables ?Requête très simple, mais ?
Plus de sujets relatifs à : Simple quotes, double quotes, ou pas du tout ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR