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

 


Pour ou contre du changement sur le topic ?


 
35.7 %
 5 votes
1.  Oui, faq / bonnes pratiques + blabla@php
 
 
0.0 %
        0 vote
2.  Oui, blabla@php uniquement
 
 
7.1 %
 1 vote
3.  Ce topic mérite la poubelle. Pauvre poubelle
 
 
21.4 %
 3 votes
4.  Non, ce topic reste tel quel
 
 
35.7 %
 5 votes
5.  Obiwan n'aime pas le php
 

Total : 16 votes (2 votes blancs)
Ce sondage est clos, vous ne pouvez plus voter
 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  6  7  8  ..  64  65  66  67  68  69
Auteur Sujet :

blabla@php | faq et bonnes pratiques page 1

n°1781817
grosbin
OR die;
Posté le 03-09-2008 à 11:02:12  profilanswer
 

Reprise du message précédent :

Dj YeLL a écrit :

Et débordant d'humour oui...
Dire que extract peut être utile si on l'utilise correctement, ça veut dire "placer des extract dans tous les scripts" ... [:transparency]
Je me pisse dessus tellement c'est marrant :|

Moi on m'a très longtemps critiqué de recourir au extract ..
quand je fut étudiant on me bachait que le switch case est une méthode de cochon pour programmer
et bien d'autres points qu'on résume dans ce topic ..  :jap:


---------------
Photos Panoramiques Montagnes Haute Savoie
mood
Publicité
Posté le 03-09-2008 à 11:02:12  profilanswer
 

n°1781836
theredled
● REC
Posté le 03-09-2008 à 11:29:58  profilanswer
 

grosbin a écrit :

Moi on m'a très longtemps critiqué de recourir au extract ..
quand je fut étudiant on me bachait que le switch case est une méthode de cochon pour programmer
et bien d'autres points qu'on résume dans ce topic ..  :jap:


Alors ça j'ai jamais trop bien compris [:klemton]

 

A part si c'est pour faire

Code :
  1. switch ($mois) {
  2.  case 1: $str = "janvier"; break;
  3.  case 2: $str = "février"; break;
  4.  case 3: $str = "mars"; break;
  5.  // ....
  6. }


qu'on voit dans certains codes débutants, mais qui peut etre aussi (plus) crade avec un if (), je vois pas le pb des switch case.
La présentation est claire, la répétition est minime...


Message édité par theredled le 03-09-2008 à 11:31:58

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1781837
skeye
Posté le 03-09-2008 à 11:32:17  profilanswer
 

grosbin a écrit :

Moi on m'a très longtemps critiqué de recourir au extract ..

 

...et on a eu raison, 99% des utilisations qui en sont faites sont mauvaises.[:dawa]


Message édité par skeye le 03-09-2008 à 11:32:47

---------------
Can't buy what I want because it's free -
n°1781840
skeye
Posté le 03-09-2008 à 11:33:52  profilanswer
 


WTF?[:pingouino]


---------------
Can't buy what I want because it's free -
n°1781841
Dj YeLL
$question = $to_be || !$to_be;
Posté le 03-09-2008 à 11:34:40  profilanswer
 

grosbin a écrit :

Moi on m'a très longtemps critiqué de recourir au extract ..
quand je fut étudiant on me bachait que le switch case est une méthode de cochon pour programmer
et bien d'autres points qu'on résume dans ce topic ..  :jap:


 
Pour extract, c'était peut être justifié qu'on te critique, si tu l'utilisais n'importe comment [:spamafote]
 
Quant au switch... je vois pas en quoi c'est une méthode de cochon :??:


---------------
Gamertag: CoteBlack YeLL
n°1781862
Dj YeLL
$question = $to_be || !$to_be;
Posté le 03-09-2008 à 11:54:01  profilanswer
 


 
Je dirais un truc de ce genre :
 

Code :
  1. switch(true)
  2. {
  3.    case canAccessThis():
  4.        ...
  5.    
  6.    case canAccessThat():
  7.        ...
  8.  
  9.    case canDoThis():
  10.        ...
  11.  
  12.    case canDoThat():
  13.        ...
  14. }


 
Ça évite les :
 

Code :
  1. if(canAccessThis())
  2. {
  3.    ...
  4. }
  5. if(canAccessThat())
  6. {
  7.    ...
  8. }
  9. if(canDoThis())
  10. {
  11.    ...
  12. }
  13. if(canDoThat())
  14. {
  15.    ...
  16. }


 


---------------
Gamertag: CoteBlack YeLL
n°1781863
skeye
Posté le 03-09-2008 à 11:54:34  profilanswer
 

c'est stupide.[:pingouino]


---------------
Can't buy what I want because it's free -
n°1781869
skeye
Posté le 03-09-2008 à 11:58:24  profilanswer
 

 

là ça fait pas la même chose, t'as mis un break; et pas de else [:petrus75]


Message édité par skeye le 03-09-2008 à 11:58:36

---------------
Can't buy what I want because it's free -
n°1781872
skeye
Posté le 03-09-2008 à 12:00:47  profilanswer
 


Dans son exemple la version avec switch est plus longue que l'autre et pas plus lisible.
Si tu as des else/if imbriqués tu remplaces par du switch/case + break à la rigueur...mais là ça n'a pas de sens.

Message cité 1 fois
Message édité par skeye le 03-09-2008 à 12:00:55

---------------
Can't buy what I want because it's free -
n°1781883
skeye
Posté le 03-09-2008 à 12:08:14  profilanswer
 

 

Question de point de vue, à moins d'avoir de gros if/else imbriqués j'ai pas l'impression qu'on y gagne tant que ça en lisibilité, ne serait-ce qu'à cause du risque des mélanges des genres avec/sans break...au contraire je trouve que la notation des switch/case délimite moins bien les blocs, et la possibilité de ne pas mettre de case peut rendre la compréhension plus complexe...


Message édité par skeye le 03-09-2008 à 12:09:10

---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 03-09-2008 à 12:08:14  profilanswer
 

n°1781926
Shinuza
This is unexecpected
Posté le 03-09-2008 à 12:48:11  profilanswer
 

Un dict array de fonctions sinon?


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1781929
Dj YeLL
$question = $to_be || !$to_be;
Posté le 03-09-2008 à 12:56:30  profilanswer
 

Dj YeLL a écrit :


 
Je dirais un truc de ce genre :
 

Code :
  1. switch(true)
  2. {
  3.    case canAccessThis():
  4.        ...
  5.    
  6.    case canAccessThat():
  7.        ...
  8.  
  9.    case canDoThis():
  10.        ...
  11.  
  12.    case canDoThat():
  13.        ...
  14. }


 
Ça évite les :
 

Code :
  1. if(canAccessThis())
  2. {
  3.    ...
  4. }
  5. if(canAccessThat())
  6. {
  7.    ...
  8. }
  9. if(canDoThis())
  10. {
  11.    ...
  12. }
  13. if(canDoThat())
  14. {
  15.    ...
  16. }


 


 
 
Bon en fait mon exemple est tout pourri :o
 
Sans le break, c'est toutes les clauses suivantes qui sont exécutées, et pas seulement les "case" qui matchent. J'avais oublié :o


---------------
Gamertag: CoteBlack YeLL
n°1781946
grosbin
OR die;
Posté le 03-09-2008 à 13:31:25  profilanswer
 

Switch true, ça l'air sympa ça :)

Code :
  1. $url="about.php?title=Blablblablabala&var1=whooosh";
  2. switch(1){
  3.   default:echo $url;break;
  4.   case(eregi("about\.php\?title=([^&]+)",$url,$t)):print_r($t);
  5.   case(eregi("index\.php\?var1=([^&]+)",$url,$t)):print_r($t);
  6.   case(eregi("Bla(.*)",$url,$t)):print_r($t);
  7. }


Ne Fonctionne pas :(

Message cité 2 fois
Message édité par grosbin le 03-09-2008 à 13:36:45

---------------
Photos Panoramiques Montagnes Haute Savoie
n°1781947
skeye
Posté le 03-09-2008 à 13:33:27  profilanswer
 

grosbin a écrit :

Switch true, ça l'air sympa ça :)

Code :
  1. switch(1){
  2. case(eregi("about\.php\?title=([^&]+)",$url,$t)):Redirection301($t[1]);
  3. case(eregi("index\.php\?var1=([^&]+)",$url,$t)):Redirection301($t[1]);
  4. }


ça fonctionnerait ? ( pas besoin de break avec fonction Redirection )


c'est particulièrement imbitable au premier coup d'oeil, mais pas de raison que ça marche pas....


---------------
Can't buy what I want because it's free -
n°1781948
Dj YeLL
$question = $to_be || !$to_be;
Posté le 03-09-2008 à 13:34:03  profilanswer
 

On met pas un break pour faire beau hein. Si jamais ta fonction Redirection301 merde, il se passe quoi d'après toi ? :o


---------------
Gamertag: CoteBlack YeLL
n°1781950
skeye
Posté le 03-09-2008 à 13:35:10  profilanswer
 

Dj YeLL a écrit :

On met pas un break pour faire beau hein. Si jamais ta fonction Redirection301 merde, il se passe quoi d'après toi ? :o


rien si ça matche pas la deuxième regexp [:joce]


---------------
Can't buy what I want because it's free -
n°1781954
Dj YeLL
$question = $to_be || !$to_be;
Posté le 03-09-2008 à 13:37:40  profilanswer
 

skeye a écrit :


rien si ça matche pas la deuxième regexp [:joce]


 
1> Si la première est matchée et que Redirection301 déconne, tous les autres "case" sont exécutés, que ça match ou pas.
 
2> Si tu as du code derrière ton switch, il sera exécuté aussi.
 
Donc quand on appelle une fonction qui fait une redirection, mieux vaut mettre un die() après, pour être sûr que le user ne vois pas ce qu'il ne doit pas voir en cas de problème :o


---------------
Gamertag: CoteBlack YeLL
n°1781955
FlorentG
Unité de Masse
Posté le 03-09-2008 à 13:37:43  profilanswer
 

grosbin a écrit :

Ne Fonctionne pas :(


Mais pourquoi y'a-t-il des gens qui utilisent encore eregi à la place de preg ? [:sadnoir]

n°1781956
grosbin
OR die;
Posté le 03-09-2008 à 13:38:13  profilanswer
 

eregi ne retourne jamais true on dirait ..

Code :
  1. $url="about.php?title=Blablblablabala&var1=whooosh";
  2. if(eregi("about\.php\?title=([^&]+)",$url,$t))print_r($t);


Fonctionne en revanche .. :(
Ma fonction redir301 fait le die bien sûr :D

Code :
  1. function R301($url){header("Location: $url",TRUE,301);EXIT;}

Message cité 1 fois
Message édité par grosbin le 03-09-2008 à 13:39:15

---------------
Photos Panoramiques Montagnes Haute Savoie
n°1781958
skeye
Posté le 03-09-2008 à 13:39:20  profilanswer
 

Dj YeLL a écrit :


 
1> Si la première est matchée et que Redirection301 déconne, tous les autres "case" sont exécutés, que ça match ou pas.


 
Euh, non. Ou alors php fait VRAIMENT n'importe-quoi.[:pingouino]


---------------
Can't buy what I want because it's free -
n°1781960
Dj YeLL
$question = $to_be || !$to_be;
Posté le 03-09-2008 à 13:39:43  profilanswer
 

skeye a écrit :


 
Euh, non. Ou alors php fait VRAIMENT n'importe-quoi.[:pingouino]


 
Si tu mets pas de break, si.


---------------
Gamertag: CoteBlack YeLL
n°1781961
skeye
Posté le 03-09-2008 à 13:40:27  profilanswer
 

grosbin a écrit :

eregi ne retourne jamais true on dirait ..


 
genre ça retournait comme indiqué dans la doc alors? http://fr.php.net/manual/en/function.eregi.php

Citation :

Return Values
 
Returns the length of the matched string if a match for pattern was found in string , or FALSE if no matches were found or an error occurred.
 
If the optional parameter regs was not passed or the length of the matched string is 0, this function returns 1.


---------------
Can't buy what I want because it's free -
n°1781962
FlorentG
Unité de Masse
Posté le 03-09-2008 à 13:41:00  profilanswer
 

preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match preg_match

n°1781963
skeye
Posté le 03-09-2008 à 13:41:15  profilanswer
 

Dj YeLL a écrit :

 

Si tu mets pas de break, si.

 

Dans n'importe-quel langage ça n'exécute le contenu d'un case que si la condition est satisfaite, break avant ou pas.

 

[edit]

 

ok, pas php, la doc l'indique. Mon dieu quelle merde.[:moule_bite]

Message cité 3 fois
Message édité par skeye le 03-09-2008 à 13:42:14

---------------
Can't buy what I want because it's free -
n°1781964
FlorentG
Unité de Masse
Posté le 03-09-2008 à 13:43:01  profilanswer
 

skeye a écrit :

Dans n'importe-quel langage ça n'exécute le contenu d'un case que si la condition est satisfaite, break avant ou pas.


Sauf si y'a pas de break ? Genre :

Code :
  1. switch($pouet) {
  2.   case 1:
  3.   case 2:
  4.     tagada();
  5.   case 3:
  6.   case 4:
  7.     pouet();
  8.     break;
  9.   case 5:
  10.     somethingElse();
  11. }


 
Si $pouet == 2, on va lancer tagada et pouet

n°1781965
Dj YeLL
$question = $to_be || !$to_be;
Posté le 03-09-2008 à 13:43:09  profilanswer
 

skeye a écrit :


 
Dans n'importe-quel langage ça n'exécute le contenu d'un case que si la condition est satisfaite, break avant ou pas.
 
[edit]
 
ok, pas php, la doc l'indique. Mon dieu quelle merde.[:moule_bite]


 
N'importe quoi :/ Le fonctionnement en JS par exemple est exactement le même [:spamafote]


---------------
Gamertag: CoteBlack YeLL
n°1781967
skeye
Posté le 03-09-2008 à 13:43:46  profilanswer
 

Dj YeLL a écrit :


 
N'importe quoi :/ Le fonctionnement en JS par exemple est exactement le même [:spamafote]


bah JS c'est de la merde aussi.[:dawa]


---------------
Can't buy what I want because it's free -
n°1781969
skeye
Posté le 03-09-2008 à 13:45:46  profilanswer
 


oui c'est bon j'ai vu ça dans la doc...mais soit je suis subitement devenu fou, soit c'est un comportement parfaitement ridicule.


---------------
Can't buy what I want because it's free -
n°1781970
grosbin
OR die;
Posté le 03-09-2008 à 13:45:49  profilanswer
 

skeye a écrit :


genre ça retournait comme indiqué dans la doc alors? http://fr.php.net/manual/en/function.eregi.php

Citation :

Return Values
 
Returns the length of the matched string if a match for pattern was found in string , or FALSE if no matches were found or an error occurred.
 
If the optional parameter regs was not passed or the length of the matched string is 0, this function returns 1.



Super bien vu, ça retourne "31" donc case(31) .. pour que eregi return true alors là je sais pas


---------------
Photos Panoramiques Montagnes Haute Savoie
n°1781971
skeye
Posté le 03-09-2008 à 13:46:17  profilanswer
 

grosbin a écrit :


Super bien vu, ça retourne "31" donc case(31) .. pour que eregi return true alors là je sais pas


(eregi(...)!=false) ?


---------------
Can't buy what I want because it's free -
n°1781974
FlorentG
Unité de Masse
Posté le 03-09-2008 à 13:47:36  profilanswer
 

grosbin a écrit :

Super bien vu, ça retourne "31" donc case(31) .. pour que eregi return true alors là je sais pas


Tu m'as mis en ignore list ou quoi [:pingouino]
 
Faut pas utiliser cette merde de eregi et des regexp posix à la con, ses perfs de merde et son comportement louche. Faut utiliser preg_match, qui retourne true ou false ou rien d'autre, avec des perfs valables, et de vraies regexp à la PCRE

n°1781975
FlorentG
Unité de Masse
Posté le 03-09-2008 à 13:48:31  profilanswer
 

skeye a écrit :

oui c'est bon j'ai vu ça dans la doc...mais soit je suis subitement devenu fou, soit c'est un comportement parfaitement ridicule.


T'es devenu fou, en l'absence de break ça continue toujours et ça ignore les case, même en C c'est comme ça

n°1781976
grosbin
OR die;
Posté le 03-09-2008 à 13:49:31  profilanswer
 

FlorentG a écrit :


Tu m'as mis en ignore list ou quoi [:pingouino]
 
Faut pas utiliser cette merde de eregi et des regexp posix à la con, ses perfs de merde et son comportement louche. Faut utiliser preg_match, qui retourne true ou false ou rien d'autre, avec des perfs valables, et de vraies regexp à la PCRE


Ok, ça ca fonctionne en attendant :D

Code :
  1. case(eregi("about\.php\?title=([^&]+)",$url,$t)>0):print_r($t);break;


Je connais pas trop preg_match, sry  :( Si qq'un peux me traduire cette ligne en preg_match ce serait sympa  :jap:  
 


---------------
Photos Panoramiques Montagnes Haute Savoie
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7  8  ..  64  65  66  67  68  69

Aller à :
Ajouter une réponse
 

Sujets relatifs
Problème pour une mise en page sous forme de tableauAfficher sur une page web directement le resultat d'une autre page web
[PHP] Fonction include plus rapide qu'un bout de code dans la page ?Ouvrir un fichier HTML en fin de page
[Résolu] Expirer la cache au niveau de la pageexecuter une page php sans rien afficher
inserer dans ma page wikiControler le changement de page
Certificat SSL a valider pour chaque élément de pageinstallé un mdp sur une page web avec Namo
Plus de sujets relatifs à : blabla@php | faq et bonnes pratiques page 1


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