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


Audiofeeline
WRInaute accro
WRInaute accro
 
Messages: 5257
Inscription: 20 Oct 2005

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

Message le Ven Aoû 10, 2007 8:10

Hello,
je comprend pas, j'ai un warning là dessus :
Code: Tout sélectionner
if ($_GET['p'] = '';) {$p = 'home';}
else {$p = $_GET['p'];}

Qu'est-ce que je fais mal ?


lupuz
WRInaute discret
WRInaute discret
 
Messages: 212
Inscription: 15 Mar 2006

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

Message le Ven Aoû 10, 2007 8:17

if ($_GET['p'] = '';) {$p = 'home';}
else {$p = $_GET['p'];}

>

Code: Tout sélectionner
if ($_GET['p'] == '')


Audiofeeline
WRInaute accro
WRInaute accro
 
Messages: 5257
Inscription: 20 Oct 2005

Message le Ven Aoû 10, 2007 8:21

Mouarff...
Merci !


mowmow
WRInaute impliqué
WRInaute impliqué
 
Messages: 975
Inscription: 3 Nov 2004

Message le Ven Aoû 10, 2007 8:37

Utilise if(empty($_GET['p'])) c'est plus propre :)


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8299
Inscription: 23 Nov 2005

Message le Ven Aoû 10, 2007 9:00

Code: Tout sélectionner
if ((isset($_GET['p'])) && ($_GET['p'] =! ''))
{
$p = $_GET['p'];
}
else
{
$p = 'home';
}


mowmow
WRInaute impliqué
WRInaute impliqué
 
Messages: 975
Inscription: 3 Nov 2004

Message le Ven Aoû 10, 2007 9:03

Ou plus simple :

Code: Tout sélectionner
$p = $_GET['p'] ? $_GET['p'] : 'home';


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8299
Inscription: 23 Nov 2005

Message le Ven Aoû 10, 2007 9:07

Oui mais dans le cas ou $_GET['p'] est indéfini, ca va renvoyer un notice si je ne m'abuse.


mowmow
WRInaute impliqué
WRInaute impliqué
 
Messages: 975
Inscription: 3 Nov 2004

Message le Ven Aoû 10, 2007 9:11

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: Tout sélectionner
$p = !empty($_GET['p']) ? $_GET['p'] : 'home';


Beurk les isset :?


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8299
Inscription: 23 Nov 2005

Message le Ven Aoû 10, 2007 9:13

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


lupuz
WRInaute discret
WRInaute discret
 
Messages: 212
Inscription: 15 Mar 2006

Message le Ven Aoû 10, 2007 9:21

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


mowmow
WRInaute impliqué
WRInaute impliqué
 
Messages: 975
Inscription: 3 Nov 2004

Message le Ven Aoû 10, 2007 9:30

lupuz a écrit: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: Tout sélectionner
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 ...


erestrebian
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 460
Inscription: 15 Juin 2007

Message le Ven Aoû 10, 2007 9:37

Sans vouloir vexer personne, quelqu'un qui trouverai que

Code: Tout sélectionner
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 + !=


mowmow
WRInaute impliqué
WRInaute impliqué
 
Messages: 975
Inscription: 3 Nov 2004

Message le Ven Aoû 10, 2007 9:38

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


lupuz
WRInaute discret
WRInaute discret
 
Messages: 212
Inscription: 15 Mar 2006

Message le Ven Aoû 10, 2007 9:41

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.


mowmow
WRInaute impliqué
WRInaute impliqué
 
Messages: 975
Inscription: 3 Nov 2004

Message le Ven Aoû 10, 2007 9:44

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

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

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité