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

Symfony PHP Discussion :

déclarer variables statiques dans une classe controller [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut déclarer variables statiques dans une classe controller
    Bonjour,

    Pour éviter de répéter des bouts de code dans ma classe Controller, je voudrais déclarer des variables statiques pour pouvoir les récupérer par la suite dans certaines de mes fonctions, mais j'ai une erreur:
    syntax error, unexpected T_VARIABLE, expecting T_FUNCTION..
    quand j'insére au début de la classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public $var = sfConfig::get('var_name');
    En lisant la doc, j'ai vu qu'il y a une méthode "preExecute()"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function preExecute()
    {
      $this->var = sfConfig::get("var_name");
    }
    mais dans la doc symfony c'est marqué que le code est à chaque fois exécuté dans toutes les actions, alors que je souhaiterais les récupérer uniquement dans 2 de mes actions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    public function preExecute()
      {
        // The code inserted here is executed at the beginning of each action call
        ...
      }
    A votre avis quel est le meilleur moyen de le faire?
    Merci!!!!!!!

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    Je crois que l'erreur unexpected T_VARIABLE, expecting T_FUNCTION est renvoyé car tu utilise ta variable dans aucune fonction (ou en tout cas tu utilises "public" lors de sa déclaration).
    essaye par exemple dans executeIndex
    $var= sfConfig::get('var_name'); (sans public)
    ou dans une classe
    $this->var= sfConfig::get('var_name');

  3. #3
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut
    En fait pour l'instant j'ai:

    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
     
    public function executeAction1(sfWebRequest $request)
     {
    $var1= sfConfig::get('var1_name');
    $var2= sfConfig::get('var2_name');
    $var3= sfConfig::get('var3_name');
    ....
    }
     
    public function executeAction2(sfWebRequest $request)
     {
    $var1= sfConfig::get('var1_name');
    $var2= sfConfig::get('var2_name');
    $var3= sfConfig::get('var3_name');
    ....
    }
     
    public function executeAction3(sfWebRequest $request)
     {
    ...
     
    }
    donc, je voulais savoir si $var1, $var2, $var3 peuvent être déclarés comme attributs de la classe Controller et récupérés une seule fois, au lieu de répéter le même code dans les fonctions.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    quelque part dans ton action:
    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
    protected function initialisationVariables(sfWebRequest $request){
    $this->var1= sfConfig::get('var1_name');
    $this->var2= sfConfig::get('var2_name');
    $this->var3= sfConfig::get('var3_name');
    }
     
    public function executeAction1(sfWebRequest $request)
     {
    $this->initialisationVariables($request);
     
    }
     
    public function executeAction2(sfWebRequest $request)
     {
    $this->initialisationVariables($request);
    ....
    }
    utilise quand meme un "var_dump($this->var1);exit;" pour vérifier que tes variables sont bien initialisés dans ton executeAction1, mais pour moi ca marche

  5. #5
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut
    oui, ça marche bien comme ça et j'arrive à récupérer mes variables dans les fonctions quand j'ai besoin, Merciiii

    juste une dernière question, puis-je récupérer ces mêmes variables dans mon template par exp "showSuccess"?

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    dans l'action, si tu a un $this->toto, tu retrouvera cette variable dans ton template sous le nom $toto sans avoir rien besoin de faire

  7. #7
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par gototog Voir le message
    dans l'action, si tu a un $this->toto, tu retrouvera cette variable dans ton template sous le nom $toto sans avoir rien besoin de faire
    oui exactement, sinon en faisant aussi dans mon executeShow:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $this->initialisationVariables($request);
    je peux récupérer directement aussi ma variable $var1 dans le template

  8. #8
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    Citation Envoyé par flora806 Voir le message
    oui exactement, sinon en faisant aussi dans mon executeShow:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $this->initialisationVariables($request);
    je peux récupérer directement aussi ma variable $var1 dans le template
    c'est moins propre car normalement tes traitements se font dans l'action, donc autant monter ton $this->initialisationVariables($request) hors du template.

  9. #9
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par gototog Voir le message
    c'est moins propre car normalement tes traitements se font dans l'action, donc autant monter ton $this->initialisationVariables($request) hors du template.
    mais je fais pas ça au niveau du template, mais au niveau de mon controller j'ai rajouté ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public function executeShow(sfWebRequest $request)
      {
      .......
      $this->initialisationVariables($request);
     
      }
    ce qui me permet de récupérer dans mon template showSuccess : $var1...
    je ne sais pas si j'étais claire

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

Discussions similaires

  1. Appel Variable statique dans une autre classe ?
    Par noula_27 dans le forum Langage
    Réponses: 6
    Dernier message: 15/01/2013, 23h06
  2. Réponses: 14
    Dernier message: 05/09/2006, 01h17
  3. [Tableaux] Probleme variable statique dans une classe
    Par Joe Le Mort dans le forum Langage
    Réponses: 7
    Dernier message: 31/08/2006, 11h35
  4. membre statique dans une classe
    Par motrin dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 30/12/2005, 15h15
  5. Variables globales dans une classe
    Par vanitom dans le forum C++
    Réponses: 16
    Dernier message: 14/01/2005, 14h40

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