Je m'explique, j'ai mit en place un système de configuration du cœur du site (une grosse class qui gère tout le site), je voulais suivre le concept d'encapsulation donc j'ai crée un class configuration dans laquelle j'ai mit tout mes attributs en private, cependant je me voyais mal faire autant de méthode qu'il y d'attributs.
J'ai donc fait cette méthode dans la class qui contient les attributs private :
public function conf_coeur($variable, $clee='')
{
if (empty($clee))
{
return (property_exists($this, $variable)) ? $this->$variable : FALSE;
}
else
{
if (property_exists($this, $variable))
$return = $this->$variable;
else
return FALSE;
return (array_key_exists($clee, $return)) ? $return[$clee] : FALSE;
}
}
Je suis sous PHP 5.2 (ubuntu), je crois que des fonctions doivent être changer pour PHP 5.3.Ce-ci marche très bien si l'attribut est une valeur bool, int et string. Mais cafouille complètement si c'est un array. Si je fais un var_dump j'ai bien ce que j'attendais (l'array). Mais dès que j'utilise conf_coeur sur un attribut qui contient un array j'ai de gros problème avec le type de variable. Des fois quand je demande le contenu de l'array (avec le second argument de ma fonction) il me sort un type de variable array, mais si je fait un var_dump il me dis que c'est une valeur string.
Quand je fait count sur conf_coeur('attribut') il me retourne soit NULL soit FALSE. (attribut étant un array bien entendu).
Et donc ma boucle qui se trouve en dessous ne s'exécute jamais.
Cependant si je fais un var_dump sur conf_coeur('attribut') alors là tout fonctionne normalement.
A plus rien y comprendre, c'est un bug ? Une mauvaise utilisation de ma part ?
Je me remet à vous parce que je ne comprend pas du tout.
Merci d'avance