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 :

Déclarer des constantes


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 23
    Par défaut Déclarer des constantes
    Bonjour,

    Je bosse actuellement sur un projet où j'ai créé un fichier config.php pour simplifier la mise en place de l'application. Le fichier config.php permet de remplir un tableau, les lignes sont de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $config['nom du paramètre'] = 'valeur';
    J'aurais voulu importer ce fichier config.php et utiliser le tableau pour créer des constantes pouvant être appelées de cette façon ClassConfig::NomDuParametre

    Dans un premier temps j'ai pensé utiliser la méthode classique pour définir les constantes dans une classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const NOMDELACONSTANTE = 'valeur';
    Ensuite j'ai pensé à utiliser define() mais là encore ça a coincé.

    Pour créer les constantes, j'utilise une classe de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class ClassConfig {
        function SetConfig(){
            require_once 'config.php';
            foreach ($config as $key => $value) {
                déclaration de la constante
            }
        }
    }
    Pour l'instant, mes essais ne sont pas vraiment concluants
    Vous pensez que ce que je voudrais faire est possible ?

    Merci d'avance pour votre aide.

  2. #2
    Membre très actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par défaut
    Non, tu ne peux pas. Il faut que toutes les constantes d'une classe soient déclarées et initialisées avec des valeurs literals à la compilation du script. Et c'est pareil d'ailleurs pour les membres statics, sauf que ces derniers ne sont pas const.

    Une solution à peu près équivalente consisterait à mettre ton array $config dans un membre static. Du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ClassConfig::$config['machin'];
    Mais là ça ne sera plus const.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 23
    Par défaut
    Merci, c'est bien ce que je pensais.

    Je pense que je vais me tourner vers la solution de ton exemple

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Déclarer des constantes
    Par Sylv3D dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/10/2011, 06h21
  2. Déclarer des constantes calculées
    Par prodexys dans le forum Débuter
    Réponses: 12
    Dernier message: 20/12/2010, 09h55
  3. Déclarer des constante dans le makefile
    Par Colbix dans le forum Eclipse C & C++
    Réponses: 2
    Dernier message: 09/03/2009, 18h33
  4. Réponses: 6
    Dernier message: 09/01/2009, 17h04
  5. [Tableaux] Déclarer des constantes
    Par nicoreims dans le forum Langage
    Réponses: 2
    Dernier message: 31/01/2008, 22h54

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