Bonjour
Est il possible de lire dans une boucle les valeurs d'un fichier contenant que des define pour faire un traitement dessus?
Je souhaite récupérer le nom de la constante et la valeur.
Merci
Cordialement
Bonjour
Est il possible de lire dans une boucle les valeurs d'un fichier contenant que des define pour faire un traitement dessus?
Je souhaite récupérer le nom de la constante et la valeur.
Merci
Cordialement
Salut
C'est bizarre un peu comme question, car si juste au dessus on a créer des constantes avec des define(), c'est que leurs noms et valeurs sont connues, non ?
Pourquoi vouloir boucler ?
Ceci dit, tu peux utiliser une lecture du fichier (fopen, fgets), ligne par ligne et récupérer/extraire tour à tour leur nom/valeur, voir modifier les contenu du fichier.
Il y a get_defined_constants(), mais ça retourne toutes les constantes dans un tableau, mais alors toutes.
Il y tout de même la fonction constant('NOM_DE_LA_CONSTANTE') qui retourne sa valeur, mais faut connaitre son nom.
Bonjour
Oui je sais la demande est un peu particulière.
Par contre, vous avez devancer ma question d'après, a savoir, peut ont les modifier après.
Sauf erreur de ma part la fonction get_defined_constants ne permet pas de modifier la valeur, la constante je la garde tel qu'elle est.
Comment modifier la valeur de la constante, avons nous une commande pour le faire?
Cordialement
Oui, le get_defined_constants() ne fait que retourner les couples nom/valeurs, impossible de les modifier ainsi.Envoyé par William210
Ensuite, à partir du moment où le fichier des constantes (des define()) sera interprété par Php, il ne sera plus possible de modifier les constantes, car par définition une constante ne peut varier.
Le seul moyen, c'est de traiter/modifier le fichier contenant ces define() comme tout autre fichier, de modifier dynamiquement le code php, ceci avant qu'il soit interprété.
En gros, on récupère le contenu, on y modifie ce qui doit l'être, on re-génère le code php, les define(), on écrase le fichier au final par le nouveau contenu.
Enfin, si j'ai bien compris le but.
Bonjour,
J'utilise ce code pour charger dynamiquement un ensemble de paramètre sous forme de constantes. Je lis d'abord un fichier et ensuite dans une table de base de données. Si un paramètre est défini dans les 2, c'est la valeur lue dans le fichier qui fait foi car elle est définie en premier lieu à partir du fichier.
Ce système permet d'avoir des valeurs par défaut définies en base et et des valeurs spécialisables dans un fichier de conf propre à chaque serveur...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 $path = pathinfo(__FILE__); $filename = $path['dirname'] . DIRECTORY_SEPARATOR . 'params.csv'; /***********************************************/ /* Récupération des valeurs depuis fichier */ /***********************************************/ if (is_file($filename)) { $fp = fopen($filename,'r', true); if ($fp) { while($data = fgetcsv($fp,0,';')) { define($data[0], $data[1]); } fclose($fp); } } require_once('config/si_database.php'); /***********************************************/ /* Récupération des valeurs depuis BDD */ /***********************************************/ $dbConfig = new SI_DB_CONFIG(); $db = $dbConfig->paramConn(); $query = 'SELECT NOM_PARAMETRE, VALEUR FROM params'; $stmt = $db->query($query); while($param = $stmt->fetch(PDO::FETCH_ASSOC)) { //Si le paramètre n'est pas déjà défini en fichier... if (!defined($param['NOM_PARAMETRE'])) define($param['NOM_PARAMETRE'], $param['VALEUR']); } $stmt->closeCursor();
Oui, et je n'est vraiment pas vu de quoi le faire par MP, rien vu de si confidentiel que ça, t'aurais très bien pu te contenter d'ajouter cet info dans ton 1er post.Avez vous reçu mon mp qui vous donne la raison de cette recherche?
Partager