Bonjour,
je suis actuellement en cours de développement d'un moteur de templates (avec cache et gestion des erreurs).
Si le problème suivant est corrigé il ne me restera plus que la gestions des erreurs à faire! 
Rentrons dans le vif du sujet, voici mon problème:
j'utilise une fonction qui assigne les différentes clés avec leurs valeurs de remplacement.
cette fonction fonctionne très bien, mais est d'une lourdeur dans le code. En effet il faut utiliser la fonction "assigner" pour chaque clés et chaque valeurs...
Il m'est donc venu l'idée
d'automatiser le tout. (Mais quel idée grandiose!
)
Mais pour automatiser ça il me faut repérer les variables et connaitre leurs clés...
le plus simple que j'ai pu trouver est de déclarer mes variables avec un nom particulier:
$template_cle_valeurOptionnelle
J'ai donc réussi à récupéré les noms de variables (avec fopen, fgets, fclose...) et à en extraire les clés et les stocker dans deux array différents (un pour les clés, l'autre pour les noms de variables).
Viens le moment d'utiliser la fonction assigner dans une boucle, et à ce moment ça plante sur les variables dynamiques.
La fonction assigner prend deux paramètres et ne renvois rien. Les deux paramètres sont, vous vous en douttez, la clé et la valeur de remplacement.
assigner("clé", "valeur de remplacement");
ainsi je doit faire une petite boucles pour passer toute les valeurs du tableau comme ce ci:
1 2 3 4 5 6 7
| $keys = $this->addKeyNames();
$varNames = $this->addVarNames();
for ($i = 0; $i < count($keys); $i++)
{
$this->assigner($keys[$i], ${$varNames[$i]});
} |
sachant que les noms de variables contenu dans l'array varNames on été déclaré précédemment (avant l'appel de la fonction).
le seul problème c'est que ${$varNames[$i]} ne veux rien afficher.
tandis qu'un simple :
1 2 3 4 5 6 7 8 9
| $haha = "youpi";
$hehe = "super";
$test = Array("hehe", "haha");
for( $i = 0; $i < count($test); $i++)
{
echo ${$test[$i]};
} |
fonctionne parfaitement...
j'ai du mal à comprendre d'où viens le problème.
Merci de votre aide (et excusez moi de l'orthographe.
)
Gwennin
Edit : J'ai essayé ça:
echo eval("$".$varNames[1].";");
La fonction eval execute une chaine comme du code php.
ça n'affiche rien. Je pense vraiment que ça viens du fait que mes nom de variables ne sont pas synchro avec l'appel de ${$varname[1]};
Edit: Sujet Résolut! des métacaractères trainaient... mais avec la fonction rtrim tout est rentré dans l'ordre!
Partager