IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Lire des define dans une boucle


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11
    Par défaut Lire des define dans une boucle
    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

  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    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.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11
    Par défaut
    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
    Citation Envoyé par RunCodePhp Voir le message
    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.

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Citation Envoyé par William210
    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?
    Oui, le get_defined_constants() ne fait que retourner les couples nom/valeurs, impossible de les modifier ainsi.

    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.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11
    Par défaut
    Re
    Avez vous reçu mon mp qui vous donne la raison de cette recherche?
    Je réfléchis et reviens vous voir.
    Cordialement

    Citation Envoyé par RunCodePhp Voir le message
    Oui, le get_defined_constants() ne fait que retourner les couples nom/valeurs, impossible de les modifier ainsi.

    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.

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    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();

  7. #7
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Avez vous reçu mon mp qui vous donne la raison de cette recherche?
    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.

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/02/2008, 00h24
  2. [MySQL] récupérer les dimensions des images dans une boucle while
    Par Navyel dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/08/2007, 11h09
  3. [FPDF] tracer des lignes dans une boucle
    Par marielaure2805 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 29/06/2007, 14h17
  4. Afectation des variables dans une boucle
    Par Yoni Lebene dans le forum Delphi
    Réponses: 3
    Dernier message: 05/01/2007, 18h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo