codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 2009
-
20 mai 2008 à 17:48
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 2009
-
20 mai 2008 à 21:33
Yop tout le monde :)
J'ai un drole de soucis avec la fonction empty, j'aimerai comprendre pourquoi.
Voici ma situation.
J'ai une classe de ce genre :
<?php
class Values {
private $_aValues = array ();
public function __set ($sKey, $mValue) {
$this->_aValues[$sKey] = $mValue;
}
public function __get ($sKey) {
if (isset ($this->_aValues[$sKey]))
return (is_string ($this->_aValues[$sKey])) ? utf8_encode ($this->_aValues[$sKey]) : $this->_aValues[$sKey];
return null;
}
}
?>
Ensuite je fait des
<?php
$mc = new Values ();
$mc->val1 = "val1";
$mc->val2 = "val2";
$mc->val3 = "";
?>
Maintenant, un var_dump (empty ($mc->val1)); me retourne TRUE.
car si tu l'a mis avant la valeur n'est pas encore assigné par contre si tu l'a mis après très bonne question a laquelle je n'ai pas de réponse pour l'instant !
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 20 mai 2008 à 18:22
Elle à été mise apres :)
si je fait
<?php
var_dump ($mc->val1); // j'obtiens string (4) "val1"
// Puis ensuite :
var_dump (empty ($mc->val1)); // j'obtiens boolean (true)
?>
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 20 mai 2008 à 19:41
Hello,
tu n'as jamais eu une erreur disant "cannot use function return in write context" ou un truc dans le genre ? Par exemple si tu fais :
empty(trim('toto'));
Ca ne marchera pas.
C'est pareil pour un getter. empty() n'est pas capable de traiter un retour de fonction dans certains contextes. Sauf que là, tu n'as pas d'erreur et empty() renvoie true en effet. J'en ai déjà fait l'expérience. La seule parade est d'assigner les propriétés "gettées" à une variable tierce pour l'utiliser dans le empty.
Vous n’avez pas trouvé la réponse que vous recherchez ?
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 20 mai 2008 à 21:33
C'est ce qui me semblait. J'ai testé un appel de fonction dans le empty et j'ai eu cette erreur de "cannot use function return in write context".
En passant par une variable tierce, empty fonctionnait. Bon du coup je fait un if ($mc->val1 != '') et hop ca marche.