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 :
- $vars = array();
- foreach($tableauPubli as $key){
- $vars[$key['publiTag']] = $key['publiVariable'];
- };
- echo str_replace(
- array_map(
- function($item) {
- return '{'. $item .'}';
- },
- array_keys($vars)
- ),
- array_map(
- function($item) use ($stage) {
- return isset($stage->$item) ? $stage->$item : 'undefined'; },
- $vars
- ),
- $email->getCorpsEmails()
- );
|
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