Smarty Forum Index Smarty
WARNING: All discussion is moving to https://reddit.com/r/smarty, please go there! This forum will be closing soon.

Condition if sur un booléen : bug Smarty ?

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Smarty Forum Index -> Language: French
View previous topic :: View next topic  
Author Message
Laurence
Smarty Rookie


Joined: 05 Jan 2006
Posts: 7

PostPosted: Wed Oct 01, 2008 11:51 am    Post subject: Condition if sur un booléen : bug Smarty ? Reply with quote

Bonjour,

J'utilise la version 2.5.0 de Smarty.

Soit $bool une variable php égale à true.
Je l'assigne sans problème.
Je la fais afficher dans le template, elle est cette fois égale à 1. Admettons.
Je la teste :
Code:

{if $bool == "nimportequoi"}
 instructions
{/if}


Résultat : Les instructions s'exécuteront !

En revanche, si je teste aussi le type de la variable $bool :

Code:

{if $bool === "nimportequoi"}
 instructions
{/if}


Résultat : Les instructions ne s'exécutent pas ! Ouf, on est rassuré ! Rolling Eyes

N'empêche ce n'est pas normal pour le premier test...
En fait, c'est comme si Smarty comprenait :
Code:

{if true (et peu importe le reste de la comparaison)}
 instructions
{/if}


Alors bug ou pas bug ?
Le cas échéant, il est peut-être corrigé dans les versions ultérieures...
Back to top
View user's profile Send private message
reb
Smarty Rookie


Joined: 17 Aug 2005
Posts: 23

PostPosted: Fri Oct 03, 2008 7:29 pm    Post subject: Reply with quote

Ce n'est pas un "problème" Smarty ; c'est PHP :
Quote:

Lors d'une conversion en booléen, les valeurs suivantes sont considérées comme FALSE :

* le booléen FALSE, lui-même
* l'entier 0 (zéro)
* le nombre à virgule flottante 0.0 (zéro)
* la chaîne vide, et la chaîne "0"
* un tableau avec aucun élément
* un objet avec aucun membre, ni variable (uniquement en PHP 4)
* le type spécial NULL (incluant les variables non définies)
* les objets SimpleXML créés depuis des drapeaux vides

Toutes les autres valeurs sont considérées comme TRUE (y compris toutes les ressources).

Voir
http://fr.php.net/manual/fr/language.types.boolean.php

Donc true == true... ce qui n'est pas faux...

Last edited by reb on Wed May 05, 2010 10:34 pm; edited 1 time in total
Back to top
View user's profile Send private message
Laurence
Smarty Rookie


Joined: 05 Jan 2006
Posts: 7

PostPosted: Sat Oct 04, 2008 2:56 pm    Post subject: Condition if sur un booléen Reply with quote

Relisez bien mon code,
cela donne :
true == "nimportequoi"
Back to top
View user's profile Send private message
reb
Smarty Rookie


Joined: 17 Aug 2005
Posts: 23

PostPosted: Sun Oct 12, 2008 5:14 pm    Post subject: Reply with quote

C'est bien ce que je dis : une chaine quelconque autre que vide "" ou "0" vaut true...

Last edited by reb on Wed May 05, 2010 10:34 pm; edited 1 time in total
Back to top
View user's profile Send private message
Laurence
Smarty Rookie


Joined: 05 Jan 2006
Posts: 7

PostPosted: Mon Oct 13, 2008 11:32 am    Post subject: Reply with quote

Quote:

Lors d'une conversion en booléen, les valeurs suivantes sont considérées comme FALSE [...]


Je n'ai pas explicitement converti la chaîne "nimportequoi" en booléen.

Nous démontrons donc bien que Smarty, aussi bien que PHP, le fait à la volée et peut induire un résultat auquel le développeur ne s'attendait pas.
Back to top
View user's profile Send private message
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Smarty Forum Index -> Language: French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group
Protected by Anti-Spam ACP