Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
875 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Stocker puis puis comparer le NOM d'une variable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Stocker puis puis comparer le NOM d'une variable

n°2275930
kontas
Photographe amateur daltonien
Posté le 19-02-2016 à 20:23:23  profilanswer
 

Salut à tous,
 
Afin de rendre plus souple et modifiable un bout de mon code, j'aimerais pouvoir comparer le nom d'une variable avec une valeur stocké en base de données.
 
En base :
 
id | variable |  
1  | $var     |  
 
Dans mon script, un truc du genre :
 
Si la chaine de caractère base est = au nom de la variable testé.
 
J'ai fais des recherches pour récupérer le nom d'une variable, mais tous mes essais n'ont rien données.  
 
Merci

mood
Publicité
Posté le 19-02-2016 à 20:23:23  profilanswer
 

n°2275931
SICKofitAL​L
misanthrope
Posté le 19-02-2016 à 23:01:37  profilanswer
 

http://php.net/get_defined_vars ?


---------------
We deserve everything that's coming...
n°2275932
kontas
Photographe amateur daltonien
Posté le 19-02-2016 à 23:48:50  profilanswer
 

Merci pour ta suggestion, peut être que je l'utilise mal, mais si je fais
 
$b = array($var1, $var2);
$arr = get_defined_vars();
 
print_r($arr["b"]);
 
j'obtient  
Array ( [0] => [1] => )
 
Donc ca prend la valeur de la variable alors que j'ai besoin de son nom  :D  

n°2275933
kontas
Photographe amateur daltonien
Posté le 19-02-2016 à 23:55:13  profilanswer
 

Correction, si je défini une valeur à mes variables (qui a terme en auront),
 
En utilisant la fonction array_keys() j'obtiens un résultat
 

Code :
  1. $var1 = "pomme";
  2.         $var2 = 'poire';
  3.         $b = array($var1, $var2);
  4.         $arr = get_defined_vars();
  5.         print_r(array_keys(get_defined_vars()));


 
Array ( [0] => var1 [1] => var2 [2] => b [3] => arr )
 
Du coup je devrais peut être pouvoir en tirer quelque chose

n°2276022
rufo
Pas me confondre avec Lycos!
Posté le 22-02-2016 à 13:58:31  profilanswer
 

Fais attention tout de même au côté sécurité. Je dois avouer que j'ai du mal à voir l'intérêt de stocker en base des noms de variables d'une script :??: Autant, je comprendrais que tu sérializes un objet pour le stocker en BD, autant des noms de simples variables, j'entrevois plus des éventuelles failles de sécus que de rendre plus souple un bout de code :/
 
Tu pourrais nous décrire plus précisément ce que tu cherches à faire ? Parce que sans doute que l'idée de rendre plus souple ton code est bonne mais que la solution que tu as retenue l'est moins... ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2276027
kontas
Photographe amateur daltonien
Posté le 22-02-2016 à 14:54:43  profilanswer
 

Salut effectivement, laisser des traces de l'architecture d'un programme en base n'est pas forcement une bonne idée.

 

Pour le moment je piétine, et je ne sais pas vraiment comment débloquer la situation.

 

Pour expliquer un peut mieux la problématique.

 

En base de donnée j'ai des textes qui devront êtres utiliser pour du publipostage par Email, et ceux pour différents scénario. Ces textes contiennent des balises du genre, {date}, {nom}, etc.

 

Actuellement, j'ai réussi à centraliser une partie de mes publipostage dans une seul est même classe php. La comparaison des {balises} et faite à partir de tableau défini dans le code de ma classe.

 

Ce que je souhaiterais c'est pouvoir gérer cette liste de code directement dans la base. avec une table :
||id | balise | variableCorrespondante | donnéeExemple | Catégorie||

 

Grace à une aide je peu maintenant faire à peut prés le résultat attendu

 


$tableauPubli; // Est un tableau de la table de publipostage
$email->getCorpsEmails() // Retourne le texte comportant les balises à remplacer

 
Code :
  1. $vars = array();
  2. foreach($tableauPubli as $key){
  3. $vars[$key['publiTag']] = $key['publiVariable'];
  4. };
  5. echo str_replace(
  6. array_map(
  7.  function($item) {
  8.   return '{'. $item .'}';
  9.  },
  10.  array_keys($vars)
  11. ),
  12. array_map(
  13.  function($item) use ($stage) {
  14.   return isset($stage->$item) ? $stage->$item : 'undefined'; },
  15.  $vars
  16. ),
  17. $email->getCorpsEmails()
  18. );
 

Le problème avec cette méthode c'est que ca récupère les valeurs associé aux propriété de la class, je ne peu donc pas utiliser mes Getters, autre problématique, j'aimerais pouvoir faire passer n'importe quelle classe à cette routine, ce qui veux dire qu'il faut qu'elle soient capable d'explorer la classe que je lui envoie, récupérer toutes les propriété, qui parfois contiennent des tableaux d'objets ... Donc c'est un peu galère

 

J'ai bien essayé avec les get_object_var, puis de tester si chacune des valeurs sont is_object, ou is_array(), mais comme les éléments peuvent s'imbriquer ca donne des boucles toutes foireuses.

 


Message édité par kontas le 22-02-2016 à 14:55:04
n°2276028
rufo
Pas me confondre avec Lycos!
Posté le 22-02-2016 à 15:05:34  profilanswer
 

De ce que je comprends, t'as pas besoin de stocker des noms de variables "php". C'est juste un pb d'associer des colonnes d'une table à des balises dans un template.
 
Il faut donc que t'arrive à faire une structure de BD (1 ou plusieurs tables) permettant de gérer les enregistrements pour le publipostage, et, en fonction du template utilisé, que les enregistrements disposent des bonnes données à insérer dans le template.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2276029
kontas
Photographe amateur daltonien
Posté le 22-02-2016 à 15:28:12  profilanswer
 

C'est tout à fais ca. Pour le moment ca fonctionne avec une classe simple en mettant le nom de la propriété qui contient la valeur en base. Seulement mes classes ne sont pas si simple :/


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Stocker puis puis comparer le NOM d'une variable

 

Sujets relatifs
bouton excel qui copie une cellulle sur une plage variableRetourner une variable à un programme VBA appelant
Lancement fonctions dont le nom est en variable dans une classe....Objets multiples manipulables avec un numéro variable? Autre solution?
Changer couleur bouton selon variableNom d'un code Jquery
Convertir un string en nom de variable ? (parseJSON)Récupérer variable d'une URL dans un VBS
Récupérer variable d'un flux XMLvariable dans une condition bash
Plus de sujets relatifs à : Stocker puis puis comparer le NOM d'une variable


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR