[PHP] Condition : ça veut pô... :'(

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Audiofeeline, 10 Août 2007.

  1. Audiofeeline
    Audiofeeline WRInaute accro
    Inscrit:
    20 Octobre 2005
    Messages:
    4 172
    J'aime reçus:
    2
    Hello,
    je comprend pas, j'ai un warning là dessus :
    Code:
    if ($_GET['p'] = '';) {$p = 'home';}
    else {$p = $_GET['p'];}
    Qu'est-ce que je fais mal ?
     
  2. lupuz
    lupuz WRInaute discret
    Inscrit:
    15 Mars 2006
    Messages:
    192
    J'aime reçus:
    0
    if ($_GET['p'] = '';) {$p = 'home';}
    else {$p = $_GET['p'];}

    >

    Code:
    if ($_GET['p'] == '')
    
     
  3. Audiofeeline
    Audiofeeline WRInaute accro
    Inscrit:
    20 Octobre 2005
    Messages:
    4 172
    J'aime reçus:
    2
    Mouarff...
    Merci !
     
  4. mowmow
    mowmow WRInaute impliqué
    Inscrit:
    3 Novembre 2004
    Messages:
    865
    J'aime reçus:
    0
    Utilise if(empty($_GET['p'])) c'est plus propre :)
     
  5. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 973
    J'aime reçus:
    121
    Code:
    if ((isset($_GET['p'])) && ($_GET['p'] =! '')) 
    {
    $p = $_GET['p'];
    }
    else 
    {
    $p = 'home';
    }
    
     
  6. mowmow
    mowmow WRInaute impliqué
    Inscrit:
    3 Novembre 2004
    Messages:
    865
    J'aime reçus:
    0
    Ou plus simple :

    Code:
    $p = $_GET['p'] ? $_GET['p'] : 'home';
     
  7. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 973
    J'aime reçus:
    121
    Oui mais dans le cas ou $_GET['p'] est indéfini, ca va renvoyer un notice si je ne m'abuse.
     
  8. mowmow
    mowmow WRInaute impliqué
    Inscrit:
    3 Novembre 2004
    Messages:
    865
    J'aime reçus:
    0
    C'est sûr, mais je doute du nombre d'utilisateur PHP qui codent en E_ALL volontairement, si ce n'est pour perdre du temps :) Pour enlever la notice il suffit de remplacer :

    Code:
    $p = !empty($_GET['p']) ? $_GET['p'] : 'home';
    Beurk les isset :?
     
  9. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 973
    J'aime reçus:
    121
    Bein un développeur pro qui ne taffe pas dans un environnement de ce type, et donc avec un codage propre qui ne posera aucun souci si le site est deployé sur un serveur paramétré autrement, c'est tout sauf professionnel. Ce n'est pas une question de perte de temps, c'est surtout la garantie d'un travail propre.
     
  10. lupuz
    lupuz WRInaute discret
    Inscrit:
    15 Mars 2006
    Messages:
    192
    J'aime reçus:
    0
    +1 UsagiYojimbo.

    Tous les codeur PHP qui on la main sur le serveur et peuvent le configurer passe en E_ALL au moins pour la phase de développement.
     
  11. mowmow
    mowmow WRInaute impliqué
    Inscrit:
    3 Novembre 2004
    Messages:
    865
    J'aime reçus:
    0
    Pas besoin d'avoir la main sur son serveur, si je me trompe pas un simple error_reporting(E_ALL); suffit.

    Un développeur pro pour toujours avoir un code qui est compatible avec un environnement E_ALL, ca signifiera pas pour autant que c'est propre je suis désolé :)

    Sans vouloir te vexer, un code comme celui là :

    Code:
    if ((isset($_GET['p'])) && ($_GET['p'] =! ''))
    {
    $p = $_GET['p'];
    }
    else
    {
    $p = 'home';
    } 
    n'est pas vraiment lisible ni propre. On va pas s'amuser à vérifier si la variable est à la fois définie et non vide, un simple !empty() suffit très bien.

    Un codeur pro sait très pertinement comment bien coder, l'utilisation d'un $_GET['p'] non vérifié n'implique pas qu'il code mal :) Ca permet une meilleure lisibilité au code et un gain de temps. Après personnellement je n'ai aucune notice quand je code (vérifié en E_ALL), le premier exemple que j'ai donné était quelque chose de simplifié au maximum mais que je n'utilise pas. Faire trop de lignes pour un résultat équivalent c'est mauvais ...
     
  12. erestrebian
    erestrebian WRInaute occasionnel
    Inscrit:
    15 Juin 2007
    Messages:
    411
    J'aime reçus:
    0
    Sans vouloir vexer personne, quelqu'un qui trouverai que

    Code:
    if ((isset($_GET['p'])) && ($_GET['p'] != ''))
    {
    $p = $_GET['p'];
    }
    else
    {
    $p = 'home';
    }
    n'est pas lisible, n'a sans doute jamais fait de php.


    Question propreté, je développe tout en E_ALL, je ne sais pas si c'est plus PROpre mais je trouve que ça l'est...

    Je vote donc pour la solution isset + !=
     
  13. mowmow
    mowmow WRInaute impliqué
    Inscrit:
    3 Novembre 2004
    Messages:
    865
    J'aime reçus:
    0
    Faudra que tu m'expliques alors comment !empty($_GET['p']) est moins compréhensible qu'un ((isset($_GET['p'])) && ($_GET['p'] != '')) avec doubles paranthèses en plus :)
     
  14. lupuz
    lupuz WRInaute discret
    Inscrit:
    15 Mars 2006
    Messages:
    192
    J'aime reçus:
    0
    Je ne critiquais pas tes capacité de codeur. Tu as effectivement donné un code bien optimisé.

    Je faisait seulement référence au post précédent.
    Et je suis d'accord pour dire qu'avant de déployer un script PHP le mieux est d'éviter toute forme d'erreur pour être tranquille lors de la mise en ligne et donc de développer en E_ALL.
     
  15. mowmow
    mowmow WRInaute impliqué
    Inscrit:
    3 Novembre 2004
    Messages:
    865
    J'aime reçus:
    0
    Totalement d'accord, après l'intérêt c'est de savoir coder de la bonne facon de manière à ne pas avoir de notices :)
     
  16. erestrebian
    erestrebian WRInaute occasionnel
    Inscrit:
    15 Juin 2007
    Messages:
    411
    J'aime reçus:
    0
    J'ai juste dit que c'était lisible par un débutant, j'ai pas fait de comparatif sur la compréhension (ou alors à mon insu). Je répondais simplement à l'itération suivante :

    Pour moi, c'est lisible et propre, le empty est lui aussi lisible mais ni plus ni moins...

    edit : pour les doubles parenthèses, j'ai fait un copier coller du post précédent sans vérifier les éventuelles erreurs.
     
  17. mowmow
    mowmow WRInaute impliqué
    Inscrit:
    3 Novembre 2004
    Messages:
    865
    J'aime reçus:
    0
    Pour un débutant c'est carrément moins simple à comprendre, et c'est d'ailleurs en apprenant à ces mêmes débutants ce genre de vérification de variables ou autres qu'on retrouve des atrocités en PHP...
     
Chargement...
Similar Threads - [PHP] Condition ça Forum Date
[PHP] Condition et include Développement d'un site Web ou d'une appli mobile 31 Janvier 2013
Astuce [PHP] Récolter ville, pays du visiteur Développement d'un site Web ou d'une appli mobile 9 Mars 2021
[PHP] Détecter le navigateur / bot en fonction du HTTP_USER_AGENT Développement d'un site Web ou d'une appli mobile 14 Septembre 2019
[PHP] Détecter le navigateur / bot en fonction du HTTP_USER_AGENT Développement d'un site Web ou d'une appli mobile 12 Janvier 2017
[PHP] Cookie vide dans une fonction, complet juste avant ou après Développement d'un site Web ou d'une appli mobile 25 Novembre 2014
[php] Cookie d'un domaine vers un sous-domaine Développement d'un site Web ou d'une appli mobile 29 Août 2014
[PHP]Cci mails Développement d'un site Web ou d'une appli mobile 18 Août 2014
[PHP] gethostbyname Développement d'un site Web ou d'une appli mobile 15 Février 2014
[PHP] file_get_contents retourne un "Connection timed out" Développement d'un site Web ou d'une appli mobile 14 Février 2014
[PHP] Regex Complexe Développement d'un site Web ou d'une appli mobile 29 Octobre 2013
[PHP] Formulaire dynamique Développement d'un site Web ou d'une appli mobile 2 Mai 2013
[php] error suite à code antiduplication Développement d'un site Web ou d'une appli mobile 5 Février 2013
[PHP] comprendre ce code pour pseudo-frame Développement d'un site Web ou d'une appli mobile 28 Décembre 2012
[PHP] Requête très lente Développement d'un site Web ou d'une appli mobile 22 Septembre 2012
[PHP] Question technique Regex Développement d'un site Web ou d'une appli mobile 28 Juillet 2012
[PHP] file_get_contents sur le serveur même... Développement d'un site Web ou d'une appli mobile 9 Juillet 2012
[PHP] FILTER_VALIDATE_IP et REMOTE_ADDR Développement d'un site Web ou d'une appli mobile 8 Juillet 2012
[PHP] Requête PDO à modifier Développement d'un site Web ou d'une appli mobile 13 Mai 2012
[PHP] Détecter l'OS, le navigateur et la langue [Résolu] Développement d'un site Web ou d'une appli mobile 4 Mars 2012
[Php] Vérifier la présence d'un slash en fin d'url Développement d'un site Web ou d'une appli mobile 2 Mars 2012