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

WRInaute accro
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 ?
 
WRInaute impliqué
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 :?
 
WRInaute accro
mowmow a dit:
C'est sûr, mais je doute du nombre d'utilisateur PHP qui codent en E_ALL volontairement

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.
 
WRInaute discret
+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.
 
WRInaute impliqué
lupuz a dit:
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.

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 ...
 
WRInaute occasionnel
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 + !=
 
WRInaute impliqué
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 :)
 
WRInaute discret
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.
 
WRInaute impliqué
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 :)
 
WRInaute occasionnel
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 :

mowmow a dit:
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.

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.
 
WRInaute impliqué
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...
 
Discussions similaires
Haut