|
Smarty
WARNING: All discussion is moving to https://reddit.com/r/smarty, please go there! This forum will be closing soon. |
|
View previous topic :: View next topic |
Author |
Message |
Laurence Smarty Rookie
Joined: 05 Jan 2006 Posts: 7
|
Posted: Wed Oct 01, 2008 11:51 am Post subject: Condition if sur un booléen : bug Smarty ? |
|
|
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é !
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 |
|
reb Smarty Rookie
Joined: 17 Aug 2005 Posts: 23
|
Posted: Fri Oct 03, 2008 7:29 pm Post subject: |
|
|
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 |
|
Laurence Smarty Rookie
Joined: 05 Jan 2006 Posts: 7
|
Posted: Sat Oct 04, 2008 2:56 pm Post subject: Condition if sur un booléen |
|
|
Relisez bien mon code,
cela donne :
true == "nimportequoi" |
|
Back to top |
|
reb Smarty Rookie
Joined: 17 Aug 2005 Posts: 23
|
|
Back to top |
|
Laurence Smarty Rookie
Joined: 05 Jan 2006 Posts: 7
|
Posted: Mon Oct 13, 2008 11:32 am Post subject: |
|
|
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 |
|
|
|
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
|